From 34ed3e1e2139766cb9bd5c425f41f04c35e3bd92 Mon Sep 17 00:00:00 2001 From: Lanius Trolling Date: Wed, 15 Jun 2022 16:27:48 -0400 Subject: [PATCH] Initial commit --- .gitignore | 46 + .idea/.gitignore | 8 + .idea/gradle.xml | 20 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/markdown.xml | 10 + .idea/misc.xml | 104 + .idea/uiDesigner.xml | 124 + .idea/vcs.xml | 6 + build.gradle.kts | 43 + gradle.properties | 1 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 234 + gradlew.bat | 89 + logs/server.log | 3426 ++ patch | 6 + settings.gradle.kts | 3 + .../kotlin/info/mechyrdia/Configuration.kt | 48 + src/main/kotlin/info/mechyrdia/Factbooks.kt | 108 + .../info/mechyrdia/lore/article_listing.kt | 27 + .../kotlin/info/mechyrdia/lore/html_utils.kt | 17 + .../kotlin/info/mechyrdia/lore/http_utils.kt | 5 + src/main/kotlin/info/mechyrdia/lore/parser.kt | 180 + .../kotlin/info/mechyrdia/lore/parser_tags.kt | 359 + .../kotlin/info/mechyrdia/lore/parser_toc.kt | 10 + .../info/mechyrdia/lore/tylan_language.kt | 62 + .../kotlin/info/mechyrdia/lore/view_bar.kt | 20 + .../kotlin/info/mechyrdia/lore/view_nav.kt | 42 + .../kotlin/info/mechyrdia/lore/view_tpl.kt | 83 + .../kotlin/info/mechyrdia/lore/views_error.kt | 27 + .../kotlin/info/mechyrdia/lore/views_lore.kt | 43 + .../kotlin/info/mechyrdia/lore/views_prefs.kt | 56 + src/main/resources/logback.xml | 25 + .../font/tylan-language-alphabet-3.woff | Bin 0 -> 4296 bytes .../polymer/lib/elements/array-selector.html | 410 + .../polymer/lib/elements/custom-style.html | 73 + .../polymer/lib/elements/dom-bind.html | 121 + .../polymer/lib/elements/dom-if.html | 265 + .../polymer/lib/elements/dom-module.html | 134 + .../polymer/lib/elements/dom-repeat.html | 687 + .../polymer/lib/legacy/class.html | 334 + .../lib/legacy/legacy-element-mixin.html | 917 + .../lib/legacy/mutable-data-behavior.html | 150 + .../polymer/lib/legacy/polymer-fn.html | 48 + .../polymer/lib/legacy/polymer.dom.html | 336 + .../lib/legacy/templatizer-behavior.html | 136 + .../polymer/lib/mixins/element-mixin.html | 929 + .../lib/mixins/gesture-event-listeners.html | 61 + .../polymer/lib/mixins/mutable-data.html | 194 + .../lib/mixins/property-accessors.html | 576 + .../polymer/lib/mixins/property-effects.html | 2384 + .../polymer/lib/mixins/template-stamp.html | 477 + .../polymer/lib/utils/array-splice.html | 321 + .../polymer/lib/utils/async.html | 203 + .../polymer/lib/utils/boot.html | 60 + .../polymer/lib/utils/case-map.html | 64 + .../polymer/lib/utils/debounce.html | 94 + .../lib/utils/flattened-nodes-observer.html | 242 + .../polymer/lib/utils/flush.html | 60 + .../polymer/lib/utils/gestures.html | 853 + .../polymer/lib/utils/import-href.html | 107 + .../polymer/lib/utils/mixin.html | 76 + .../polymer/lib/utils/path.html | 274 + .../polymer/lib/utils/render-status.html | 130 + .../polymer/lib/utils/resolve-url.html | 108 + .../polymer/lib/utils/style-gather.html | 146 + .../polymer/lib/utils/templatize.html | 473 + .../polymer/lib/utils/unresolved.html | 31 + .../polymer/polymer-element.html | 33 + .../bower_components/polymer/polymer.html | 25 + .../bower_components/shadycss/apply-shim.html | 10 + .../shadycss/apply-shim.min.js | 29 + .../shadycss/apply-shim.min.js.map | 1 + .../shadycss/custom-style-interface.html | 10 + .../shadycss/custom-style-interface.min.js | 16 + .../custom-style-interface.min.js.map | 1 + .../shadycss/scoping-shim.min.js | 54 + .../shadycss/scoping-shim.min.js.map | 1 + .../webcomponentsjs/webcomponents-lite.js | 194 + .../webcomponentsjs/webcomponents-lite.js.map | 1 + .../static/gltf-viewer/gltf-viewer.html | 176 + .../static/gltf-viewer/js/OrbitControls.js | 1042 + .../static/gltf-viewer/js/three-examples.js | 1452 + .../resources/static/gltf-viewer/js/three.js | 36493 ++++++++++++++++ .../static/images/background-dark.jpg | Bin 0 -> 1190486 bytes .../resources/static/images/background.jpg | Bin 0 -> 1155813 bytes .../static/images/external-link-dark.svg | 20 + .../resources/static/images/external-link.svg | 20 + src/main/resources/static/images/icon.svg | 87 + src/main/resources/static/images/logo.svg | 52 + .../resources/static/images/panel-dark.svg | 14 + src/main/resources/static/images/panel.svg | 14 + src/main/resources/static/init.js | 33 + src/main/resources/static/style.css | 655 + update | 6 + 95 files changed, 57156 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/gradle.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/markdown.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 build.gradle.kts create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 logs/server.log create mode 100644 patch create mode 100644 settings.gradle.kts create mode 100644 src/main/kotlin/info/mechyrdia/Configuration.kt create mode 100644 src/main/kotlin/info/mechyrdia/Factbooks.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/article_listing.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/html_utils.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/http_utils.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/parser.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/parser_tags.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/parser_toc.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/tylan_language.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/view_bar.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/view_nav.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/view_tpl.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/views_error.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/views_lore.kt create mode 100644 src/main/kotlin/info/mechyrdia/lore/views_prefs.kt create mode 100644 src/main/resources/logback.xml create mode 100644 src/main/resources/static/font/tylan-language-alphabet-3.woff create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/array-selector.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/custom-style.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-bind.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-if.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-repeat.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/class.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/legacy-element-mixin.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/mutable-data-behavior.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer-fn.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer.dom.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/templatizer-behavior.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/gesture-event-listeners.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/mutable-data.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/array-splice.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/async.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/boot.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/debounce.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flattened-nodes-observer.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flush.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/gestures.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/import-href.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/path.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/render-status.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/templatize.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/unresolved.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/polymer-element.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/polymer/polymer.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.min.js create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.min.js.map create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.html create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.min.js create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.min.js.map create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/scoping-shim.min.js create mode 100644 src/main/resources/static/gltf-viewer/bower_components/shadycss/scoping-shim.min.js.map create mode 100644 src/main/resources/static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js create mode 100644 src/main/resources/static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js.map create mode 100644 src/main/resources/static/gltf-viewer/gltf-viewer.html create mode 100644 src/main/resources/static/gltf-viewer/js/OrbitControls.js create mode 100644 src/main/resources/static/gltf-viewer/js/three-examples.js create mode 100644 src/main/resources/static/gltf-viewer/js/three.js create mode 100644 src/main/resources/static/images/background-dark.jpg create mode 100644 src/main/resources/static/images/background.jpg create mode 100644 src/main/resources/static/images/external-link-dark.svg create mode 100644 src/main/resources/static/images/external-link.svg create mode 100644 src/main/resources/static/images/icon.svg create mode 100644 src/main/resources/static/images/logo.svg create mode 100644 src/main/resources/static/images/panel-dark.svg create mode 100644 src/main/resources/static/images/panel.svg create mode 100644 src/main/resources/static/init.js create mode 100644 src/main/resources/static/style.css create mode 100644 update diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d1963af --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store + +# Webapp specific +test/ +config.json \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..d1c4af0 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..13fe0db --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 0000000..788f21f --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..70102da --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..75d369c --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,43 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + java + kotlin("jvm") version "1.6.21" + kotlin("plugin.serialization") version "1.6.21" + id("com.github.johnrengelman.shadow") version "7.1.2" + application +} + +group = "info.mechyrdia" + +repositories { + mavenCentral() + maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven") +} + +dependencies { + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.2") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.2") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.6.2") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.3") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3") + + implementation("io.ktor:ktor-server-netty:1.6.8") + implementation("io.ktor:ktor-html-builder:1.6.8") + + implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.7.5") + + implementation("org.slf4j:slf4j-api:1.7.32") + implementation("ch.qos.logback:logback-classic:1.2.10") +} + +tasks.withType { + kotlinOptions { + jvmTarget = "1.8" + freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn") + } +} + +application { + mainClass.set("info.mechyrdia.Factbooks") +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..7fc6f1f --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +kotlin.code.style=official diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..60c76b3 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..1b6c787 --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# 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 +# +# https://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. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/logs/server.log b/logs/server.log new file mode 100644 index 0000000..d4ea447 --- /dev/null +++ b/logs/server.log @@ -0,0 +1,3426 @@ +2022-06-15/15:22:54.986 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:22:55.082 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:22:55.092 [main] I (ktor.application) - Application started in 0.104 seconds. +2022-06-15/15:22:55.092 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:22:55.098 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:22:55.181 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:22:55.181 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:22:55.183 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:22:55.183 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:22:55.184 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:22:55.184 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:22:55.185 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:22:55.185 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:22:55.185 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:22:55.185 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:22:55.185 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:22:55.185 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:22:55.187 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:22:55.189 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:22:55.190 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:22:55.190 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:22:55.190 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:22:56.353 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:22:56.366 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:22:56.367 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:22:56.371 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:22:56.371 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:22:56.376 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:22:56.517 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 4528 (auto-detected) +2022-06-15/15:22:56.518 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:22:56.518 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:22:57.511 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:22:57.512 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:22:58.573 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:22:58.582 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:22:58.583 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:22:58.601 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:22:58.602 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:22:58.602 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:22:58.602 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:22:58.602 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:22:58.612 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:22:58.612 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:22:58.612 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:23:58.644 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:23:58.644 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:23:58.645 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@241a087 +2022-06-15/15:23:58.751 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:23:58.751 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:23:58.751 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:23:58.751 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:23:59.030 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321038795 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET / Response 302 Found +2022-06-15/15:23:59.144 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321039040 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:23:59.328 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-5-1655321039282 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:23:59.329 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-4-1655321039275 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:23:59.333 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-3-1655321039268 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:23:59.389 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-6-1655321039387 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:23:59.389 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-7-1655321039387 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:23:59.397 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-9-1655321039394 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:23:59.425 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-10-1655321039423 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:23:59.441 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-11-1655321039438 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:23:59.445 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-8-1655321039389 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:23:59.490 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-12-1655321039488 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:23:59.493 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-14-1655321039488 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:23:59.493 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-13-1655321039488 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:23:59.501 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-16-1655321039496 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:23:59.501 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-17-1655321039496 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:23:59.503 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-18-1655321039498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:23:59.506 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-15-1655321039496 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:23:59.515 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-19-1655321039510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/icon.svg Response 200 OK +2022-06-15/15:23:59.534 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-20-1655321039531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:23:59.536 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-22-1655321039531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:23:59.536 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-21-1655321039531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:23:59.553 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-23-1655321039551 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:23:59.618 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-24-1655321039584 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:23:59.768 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-25-1655321039765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:23:59.789 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-26-1655321039786 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:24:00.793 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-27-1655321040719 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:24:00.843 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-28-1655321040838 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:24:00.865 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-29-1655321040862 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:24:00.876 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-30-1655321040873 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:24:00.904 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-33-1655321040901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:24:00.905 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-32-1655321040901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:24:00.944 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-34-1655321040941 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/font/tylan-language-alphabet-3.woff Response 200 OK +2022-06-15/15:24:00.947 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-31-1655321040900 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:24:00.968 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-35-1655321040966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:24:01.165 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-36-1655321041162 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:24:01.181 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-37-1655321041177 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:24:01.353 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-39-1655321041326 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:24:01.354 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-38-1655321041325 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:24:01.405 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-40-1655321041398 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:24:01.406 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-42-1655321041400 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:24:01.416 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-43-1655321041402 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:24:01.418 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-44-1655321041403 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:24:01.421 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-41-1655321041398 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:24:01.496 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-46-1655321041491 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:24:01.501 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-47-1655321041491 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:24:01.526 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-45-1655321041491 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:24:01.565 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-48-1655321041560 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:24:01.681 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-49-1655321041641 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:24:01.831 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-50-1655321041828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:24:01.852 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-51-1655321041848 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:24:08.713 [eventLoopGroupProxy-4-8] I (ktor.application) - Call #call-52-1655321048687 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:25:21.202 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:25:21.269 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:25:21.270 [main] I (ktor.application) - Application started in 0.076 seconds. +2022-06-15/15:25:21.270 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:25:21.275 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:25:21.322 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:25:21.322 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:25:21.323 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:25:21.323 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:25:21.323 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:25:21.324 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:25:21.324 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:25:21.324 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:25:21.324 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:25:21.324 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:25:21.325 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:25:21.325 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:25:21.325 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:25:21.326 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:25:21.326 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:25:21.326 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:25:21.327 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:25:22.399 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:25:22.409 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:25:22.409 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:25:22.413 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:25:22.413 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:25:22.418 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:25:22.460 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 9420 (auto-detected) +2022-06-15/15:25:22.461 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:25:22.461 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:25:23.446 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:25:23.447 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:25:24.490 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:25:24.497 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:25:24.498 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:25:24.514 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:25:24.514 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:25:24.514 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:25:24.514 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:25:24.514 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:25:24.515 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:25:24.522 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:25:24.523 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:25:24.523 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:25:28.833 [eventLoopGroupProxy-3-2] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:25:28.834 [eventLoopGroupProxy-3-2] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:25:28.839 [eventLoopGroupProxy-3-2] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@2bcc6632 +2022-06-15/15:25:29.000 [eventLoopGroupProxy-3-2] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:25:29.001 [eventLoopGroupProxy-3-2] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:25:29.002 [eventLoopGroupProxy-3-2] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:25:29.002 [eventLoopGroupProxy-3-2] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:25:29.329 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321129129 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:25:29.366 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-3-1655321129358 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:25:29.435 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-4-1655321129428 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:25:29.444 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-6-1655321129439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:25:29.447 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-7-1655321129440 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:25:29.448 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-9-1655321129442 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:25:29.448 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-5-1655321129438 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:25:29.449 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655321129440 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:25:29.460 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-10-1655321129449 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:25:29.539 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-13-1655321129534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:25:29.542 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-11-1655321129534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:25:29.543 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-12-1655321129534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:25:29.572 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-14-1655321129568 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:25:29.681 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-15-1655321129622 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:25:29.693 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-2-1655321129129 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:25:29.750 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-16-1655321129747 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:25:29.766 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-17-1655321129762 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:25:30.191 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-18-1655321130086 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:25:30.224 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-19-1655321130219 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:25:30.247 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-20-1655321130244 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:25:30.254 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-21-1655321130252 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:25:30.304 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-22-1655321130300 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:25:30.304 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-24-1655321130300 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:25:30.312 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-25-1655321130310 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:25:30.349 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-23-1655321130300 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:25:30.488 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-26-1655321130484 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:25:30.532 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-27-1655321130521 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:25:30.706 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-30-1655321130696 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:25:30.706 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-29-1655321130695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:25:30.708 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-31-1655321130700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:25:30.711 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-32-1655321130700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:25:30.712 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-28-1655321130695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:25:30.713 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-33-1655321130700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:25:30.721 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-34-1655321130712 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:25:30.887 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-35-1655321130879 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:25:30.888 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-37-1655321130879 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:25:30.888 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-36-1655321130879 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:25:30.959 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-38-1655321130953 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:25:31.065 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-39-1655321131029 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:25:31.143 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-40-1655321131141 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:25:31.158 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-41-1655321131156 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:27:14.960 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:27:15.026 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:27:15.027 [main] I (ktor.application) - Application started in 0.075 seconds. +2022-06-15/15:27:15.028 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:27:15.033 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:27:15.082 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:27:15.082 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:27:15.083 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:27:15.083 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:27:15.084 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:27:15.084 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:27:15.084 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:27:15.084 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:27:15.085 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:27:15.085 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:27:15.085 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:27:15.085 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:27:15.086 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:27:15.086 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:27:15.086 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:27:15.087 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:27:15.087 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:27:16.334 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:27:16.349 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:27:16.349 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:27:16.354 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:27:16.354 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:27:16.359 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:27:16.428 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 3804 (auto-detected) +2022-06-15/15:27:16.431 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:27:16.432 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:27:17.490 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:27:17.490 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:27:18.568 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:27:18.575 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:27:18.576 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:27:18.592 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:27:18.592 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:27:18.592 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:27:18.593 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:27:18.601 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:27:18.601 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:27:18.601 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:27:24.133 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:27:24.134 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:27:24.140 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@6b9ec08c +2022-06-15/15:27:24.306 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:27:24.306 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:27:24.306 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:27:24.306 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:27:24.575 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-2-1655321244446 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:27:24.589 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321244586 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:27:24.664 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-4-1655321244659 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:27:24.671 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655321244667 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:27:24.678 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655321244669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:27:24.678 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-6-1655321244669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:27:24.719 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-9-1655321244671 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:27:24.720 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-7-1655321244669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:27:24.734 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-10-1655321244673 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:27:24.768 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-11-1655321244764 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:27:24.772 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-12-1655321244765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:27:24.772 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-13-1655321244765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:27:24.794 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-14-1655321244790 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:27:24.845 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321244446 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:27:24.868 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-15-1655321244827 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:27:24.949 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-16-1655321244946 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:27:24.965 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-17-1655321244962 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:27:26.016 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-18-1655321245911 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:27:26.045 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-19-1655321246039 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:27:26.076 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-20-1655321246073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:27:26.089 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-21-1655321246085 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:27:26.116 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-23-1655321246113 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:27:26.116 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-24-1655321246113 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:27:26.123 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-25-1655321246121 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:27:26.158 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-22-1655321246113 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:27:26.341 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-26-1655321246333 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:27:26.360 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-27-1655321246357 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:27:26.414 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-29-1655321246410 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:27:26.414 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-30-1655321246410 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:27:26.414 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-28-1655321246410 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:27:26.419 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-31-1655321246414 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:27:26.419 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-33-1655321246415 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:27:26.420 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-32-1655321246415 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:27:26.425 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-34-1655321246417 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:27:26.455 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-35-1655321246452 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:27:26.457 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-37-1655321246452 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:27:26.457 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-36-1655321246452 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:27:26.475 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-38-1655321246473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:27:26.531 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-39-1655321246504 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:27:26.594 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-40-1655321246592 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:27:26.609 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-41-1655321246606 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:29:40.880 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:29:40.947 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:29:40.949 [main] I (ktor.application) - Application started in 0.076 seconds. +2022-06-15/15:29:40.949 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:29:40.954 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:29:41.003 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:29:41.003 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:29:41.004 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:29:41.004 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:29:41.004 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:29:41.005 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:29:41.005 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:29:41.005 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:29:41.005 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:29:41.006 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:29:41.006 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:29:41.006 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:29:41.006 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:29:41.008 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:29:41.008 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:29:41.009 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:29:41.009 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:29:42.093 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:29:42.103 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:29:42.103 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:29:42.107 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:29:42.107 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:29:42.112 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:29:42.155 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 13376 (auto-detected) +2022-06-15/15:29:42.156 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:29:42.156 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:29:43.144 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:29:43.145 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:29:44.216 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:29:44.223 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:29:44.223 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:29:44.239 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:29:44.240 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:29:44.240 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:29:44.240 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:29:44.252 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:29:44.252 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:29:44.252 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:29:45.182 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:29:45.182 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:29:45.184 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@7c81023b +2022-06-15/15:29:45.234 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:29:45.235 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:29:45.235 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:29:45.235 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:29:45.422 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321385276 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:29:45.540 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655321385516 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:29:45.540 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321385506 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:29:45.545 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321385465 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:29:45.581 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-5-1655321385578 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:29:45.581 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-6-1655321385578 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:29:45.596 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-8-1655321385593 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:29:45.634 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655321385578 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:29:45.796 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-9-1655321385793 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:29:45.821 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-10-1655321385814 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:29:45.923 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-11-1655321385920 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:29:45.923 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-13-1655321385920 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:29:45.923 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-12-1655321385920 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:29:45.948 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-15-1655321385941 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:29:45.953 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-16-1655321385944 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:29:45.953 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-17-1655321385946 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:29:45.956 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-14-1655321385925 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:29:45.990 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-20-1655321385986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:29:45.991 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-18-1655321385986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:29:45.992 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-19-1655321385986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:29:46.016 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-21-1655321386012 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:29:46.085 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-22-1655321386052 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:29:46.149 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-23-1655321386147 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:29:46.165 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-24-1655321386162 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:30:09.649 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:30:09.808 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:30:09.813 [main] I (ktor.application) - Application started in 0.168 seconds. +2022-06-15/15:30:09.815 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:30:09.827 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:30:09.959 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:30:09.960 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:30:09.964 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:30:09.966 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:30:09.967 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:30:09.968 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:30:09.970 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:30:09.970 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:30:09.971 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:30:09.971 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:30:09.972 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:30:09.972 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:30:09.973 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:30:09.976 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:30:09.976 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:30:09.977 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:30:09.977 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:30:11.199 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:30:11.209 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:30:11.210 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:30:11.213 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:30:11.214 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:30:11.218 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:30:11.262 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 11852 (auto-detected) +2022-06-15/15:30:11.264 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:30:11.264 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:30:12.276 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:30:12.276 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:30:13.492 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:30:13.515 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:30:13.516 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:30:13.561 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:30:13.562 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:30:13.562 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:30:13.562 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:30:13.562 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:30:13.562 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:30:13.563 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:30:13.563 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:30:13.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:30:13.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:30:13.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:30:13.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:30:13.590 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:30:13.591 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:30:13.592 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:30:19.225 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:30:19.225 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:30:19.227 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@753a71e0 +2022-06-15/15:30:19.277 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:30:19.277 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:30:19.277 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:30:19.277 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:30:19.471 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321419321 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:30:19.569 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655321419539 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:30:19.570 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321419532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:30:19.573 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321419498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:30:19.617 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655321419613 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:30:19.617 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655321419613 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:30:19.646 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-8-1655321419643 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:30:19.680 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-6-1655321419613 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:30:19.841 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-9-1655321419838 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:30:19.874 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-10-1655321419864 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:30:19.979 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-11-1655321419975 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:30:19.979 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-12-1655321419975 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:30:19.979 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-13-1655321419975 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:30:20.002 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-15-1655321419996 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:30:20.002 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-16-1655321419997 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:30:20.005 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-17-1655321419999 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:30:20.008 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-14-1655321419980 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:30:20.040 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-18-1655321420037 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:30:20.041 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-19-1655321420037 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:30:20.043 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-20-1655321420039 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:30:20.057 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-21-1655321420055 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:30:20.124 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-22-1655321420091 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:30:20.192 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-23-1655321420190 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:30:20.209 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-24-1655321420206 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:30:20.430 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-25-1655321420426 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture Response 200 OK +2022-06-15/15:30:20.478 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-26-1655321420475 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:30:20.492 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-28-1655321420488 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:30:20.494 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-27-1655321420486 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:30:20.531 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-29-1655321420527 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:30:20.531 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-31-1655321420528 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:30:20.535 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-32-1655321420531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:30:20.568 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-30-1655321420527 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:30:20.588 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-33-1655321420586 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:30:20.605 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-34-1655321420600 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:30:20.652 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-36-1655321420647 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:30:20.652 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-37-1655321420648 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:30:20.652 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-35-1655321420647 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:30:20.654 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-38-1655321420649 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:30:20.656 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-39-1655321420651 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:30:20.657 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-40-1655321420652 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:30:20.661 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-41-1655321420655 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:30:20.688 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-44-1655321420684 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:30:20.688 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-42-1655321420684 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:30:20.688 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-43-1655321420684 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:30:20.702 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-45-1655321420700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:30:20.765 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-46-1655321420731 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:30:20.866 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-47-1655321420863 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:30:20.883 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-48-1655321420880 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:30:21.132 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-49-1655321421130 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:30:21.208 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-50-1655321421203 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:30:21.234 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-51-1655321421231 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:30:21.235 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-52-1655321421234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:30:21.291 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-55-1655321421290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:30:21.291 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-54-1655321421290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:30:21.293 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-56-1655321421292 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:30:21.316 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-53-1655321421289 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:30:21.376 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-57-1655321421374 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:30:21.421 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-58-1655321421418 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:30:21.485 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-61-1655321421484 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:30:21.486 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-60-1655321421484 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:30:21.486 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-59-1655321421484 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:30:21.486 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-62-1655321421484 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:30:21.487 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-63-1655321421485 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:30:21.487 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-64-1655321421486 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:30:21.489 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-65-1655321421486 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:30:21.521 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-66-1655321421519 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:30:21.522 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-67-1655321421520 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:30:21.523 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-68-1655321421521 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:30:21.539 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-69-1655321421538 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:30:21.597 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-70-1655321421574 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:30:21.665 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-71-1655321421662 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:30:21.677 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-72-1655321421676 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:30:22.593 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-73-1655321422583 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places/milky-way.txt Response 200 OK +2022-06-15/15:30:22.648 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-74-1655321422644 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:30:22.682 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-75-1655321422680 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:30:22.902 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-84-1655321422900 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:30:23.087 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-80-1655321422828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-ilkhan-republic.png Response 404 Not Found +2022-06-15/15:30:23.087 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-92-1655321423084 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-arkant-horde.png Response 404 Not Found +2022-06-15/15:30:23.089 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-79-1655321422828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-niska-republic.png Response 404 Not Found +2022-06-15/15:30:23.089 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-94-1655321423085 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-fulkreykk-1.png Response 404 Not Found +2022-06-15/15:30:23.089 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-95-1655321423086 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-ferthlon-internation.png Response 404 Not Found +2022-06-15/15:30:23.090 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-91-1655321423084 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-ilkhan-commune.png Response 404 Not Found +2022-06-15/15:30:23.091 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-90-1655321423083 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-ndrc.png Response 404 Not Found +2022-06-15/15:30:23.092 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-88-1655321422916 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-diadochus-diabolorum.png Response 404 Not Found +2022-06-15/15:30:23.092 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-99-1655321423089 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-tylan-theocracy.png Response 404 Not Found +2022-06-15/15:30:23.093 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-77-1655321422828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-isarnareykk.png Response 404 Not Found +2022-06-15/15:30:23.093 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-97-1655321423087 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-telareth-republic.png Response 404 Not Found +2022-06-15/15:30:23.094 [eventLoopGroupProxy-4-11] I (ktor.application) - Call #call-87-1655321422911 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-diadochus-togatorum.png Response 404 Not Found +2022-06-15/15:30:23.094 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-76-1655321422828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-masra-draetsen.png Response 404 Not Found +2022-06-15/15:30:23.095 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-81-1655321422828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-theudareykk.png Response 404 Not Found +2022-06-15/15:30:23.094 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-86-1655321422905 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-lyudareykk.png Response 404 Not Found +2022-06-15/15:30:23.096 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-96-1655321423086 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-corsairs.png Response 404 Not Found +2022-06-15/15:30:23.096 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-104-1655321423093 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-felinae-felices.png Response 404 Not Found +2022-06-15/15:30:23.097 [eventLoopGroupProxy-4-8] I (ktor.application) - Call #call-82-1655321422900 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-stahlareykk.png Response 404 Not Found +2022-06-15/15:30:23.098 [eventLoopGroupProxy-4-11] I (ktor.application) - Call #call-108-1655321423095 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/logo-mjolnir-energy.png Response 404 Not Found +2022-06-15/15:30:23.096 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-85-1655321422903 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-diadochus-magistrorum.png Response 404 Not Found +2022-06-15/15:30:23.098 [eventLoopGroupProxy-4-8] I (ktor.application) - Call #call-101-1655321423090 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-fulkreykk-2.png Response 404 Not Found +2022-06-15/15:30:23.098 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-102-1655321423092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:30:23.098 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-93-1655321423084 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:30:23.099 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-105-1655321423094 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:30:23.099 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-89-1655321423083 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-diadochus-viperarum.png Response 404 Not Found +2022-06-15/15:30:23.099 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-107-1655321423095 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-diadochus-noctiferorum.png Response 404 Not Found +2022-06-15/15:30:23.100 [eventLoopGroupProxy-4-8] I (ktor.application) - Call #call-103-1655321423092 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-ccc.png Response 404 Not Found +2022-06-15/15:30:23.100 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-100-1655321423089 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-drakhassi-federation.png Response 404 Not Found +2022-06-15/15:30:23.100 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-109-1655321423096 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-vestigium.png Response 404 Not Found +2022-06-15/15:30:23.100 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-78-1655321422828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-chaebodes-star-empire.png Response 404 Not Found +2022-06-15/15:30:23.100 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-98-1655321423087 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-lihann-empire.png Response 404 Not Found +2022-06-15/15:30:23.102 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-83-1655321422900 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-swartareykk.png Response 404 Not Found +2022-06-15/15:30:23.139 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-106-1655321423094 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:30:23.370 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-110-1655321423368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:30:23.389 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-111-1655321423386 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:30:23.487 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-112-1655321423484 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:30:23.494 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-113-1655321423492 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:30:23.505 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-115-1655321423502 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:30:23.505 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-114-1655321423500 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:30:23.512 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-116-1655321423509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:30:23.512 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-117-1655321423510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:30:23.522 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-118-1655321423517 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:30:23.725 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-120-1655321423722 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:30:23.725 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-119-1655321423722 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:30:23.725 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-121-1655321423723 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:30:23.748 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-122-1655321423746 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:30:24.562 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-123-1655321424535 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:30:24.642 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-124-1655321424640 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:30:24.656 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-125-1655321424655 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:30:59.114 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:30:59.180 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:30:59.181 [main] I (ktor.application) - Application started in 0.074 seconds. +2022-06-15/15:30:59.182 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:30:59.186 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:30:59.233 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:30:59.233 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:30:59.234 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:30:59.235 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:30:59.235 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:30:59.235 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:30:59.235 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:30:59.236 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:30:59.236 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:30:59.236 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:30:59.236 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:30:59.236 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:30:59.237 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:30:59.237 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:30:59.237 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:30:59.238 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:30:59.238 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:31:00.316 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:31:00.325 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:31:00.326 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:31:00.330 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:31:00.330 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:31:00.334 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:31:00.383 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 13300 (auto-detected) +2022-06-15/15:31:00.384 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:31:00.385 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:31:01.484 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:31:01.484 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:31:02.541 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:31:02.548 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:31:02.548 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:31:02.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:31:02.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:31:02.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:31:02.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:31:02.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:31:02.564 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:31:02.565 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:31:02.565 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:31:02.565 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:31:02.565 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:31:02.565 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:31:02.565 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:31:02.573 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:31:02.574 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:31:02.574 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:31:11.654 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:31:11.654 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:31:11.655 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@7cf4b0c3 +2022-06-15/15:31:11.706 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:31:11.706 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:31:11.706 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:31:11.706 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:31:11.849 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321471753 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places/milky-way.txt Response 200 OK +2022-06-15/15:31:11.939 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321471873 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:31:11.939 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321471888 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:31:11.944 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655321471888 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:31:11.990 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-7-1655321471986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:31:11.993 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-6-1655321471986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:31:12.016 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-8-1655321472012 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:31:12.071 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-5-1655321471986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:31:12.237 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-9-1655321472234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:31:12.259 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-10-1655321472253 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:31:12.335 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-11-1655321472332 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:31:12.337 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-12-1655321472332 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:31:12.344 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-14-1655321472339 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:31:12.344 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-13-1655321472338 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:31:12.359 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-15-1655321472341 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:31:12.385 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-16-1655321472380 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:31:12.394 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-17-1655321472382 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:31:12.432 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-19-1655321472427 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:31:12.434 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-18-1655321472427 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:31:12.437 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-20-1655321472427 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:31:12.457 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-21-1655321472454 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:31:12.762 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-22-1655321472715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:31:12.839 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-23-1655321472837 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:31:12.853 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-24-1655321472851 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:31:14.376 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-25-1655321474372 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:31:14.419 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-26-1655321474412 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:31:14.427 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-27-1655321474421 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:31:14.432 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-28-1655321474429 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:31:14.472 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-31-1655321474470 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:31:14.473 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-30-1655321474469 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:31:14.475 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-32-1655321474473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:31:14.516 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-29-1655321474469 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:31:14.540 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-33-1655321474538 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:31:14.559 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-34-1655321474555 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:31:14.610 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-35-1655321474605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:31:14.611 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-37-1655321474606 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:31:14.611 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-36-1655321474606 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:31:14.611 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-38-1655321474606 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:31:14.615 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-39-1655321474607 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:31:14.624 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-40-1655321474613 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:31:14.624 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-41-1655321474618 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:31:14.651 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-43-1655321474648 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:31:14.651 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-42-1655321474648 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:31:14.652 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-44-1655321474649 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:31:14.666 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-45-1655321474664 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:31:14.726 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-46-1655321474698 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:31:14.801 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-47-1655321474798 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:31:14.817 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-48-1655321474813 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:31:22.244 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-49-1655321482242 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:32:12.558 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:32:12.649 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:32:12.650 [main] I (ktor.application) - Application started in 0.099 seconds. +2022-06-15/15:32:12.651 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:32:12.659 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:32:12.716 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:32:12.717 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:32:12.717 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:32:12.718 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:32:12.718 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:32:12.718 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:32:12.719 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:32:12.719 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:32:12.719 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:32:12.719 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:32:12.719 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:32:12.720 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:32:12.720 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:32:12.721 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:32:12.721 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:32:12.721 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:32:12.722 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:32:13.840 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:32:13.850 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:32:13.850 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:32:13.854 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:32:13.854 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:32:13.859 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:32:13.903 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 13936 (auto-detected) +2022-06-15/15:32:13.905 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:32:13.905 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:32:14.959 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:32:14.960 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:32:16.091 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:32:16.099 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:32:16.099 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:32:16.116 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:32:16.116 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:32:16.116 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:32:16.116 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:32:16.116 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:32:16.117 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:32:16.124 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:32:16.125 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:32:16.125 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:32:28.409 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:32:28.409 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:32:28.410 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@7c81023b +2022-06-15/15:32:28.460 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:32:28.461 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:32:28.461 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:32:28.461 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:32:28.564 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321548503 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:32:28.671 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321548609 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:32:28.671 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655321548620 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:32:28.677 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321548620 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:32:28.712 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-6-1655321548709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:32:28.712 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655321548708 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:32:28.717 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655321548713 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:32:28.767 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655321548709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:32:28.791 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-9-1655321548787 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:32:28.802 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-10-1655321548798 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/icon.svg Response 200 OK +2022-06-15/15:32:28.812 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-11-1655321548809 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:32:28.857 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-13-1655321548854 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:32:28.858 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-12-1655321548854 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:32:28.860 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-14-1655321548855 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:32:28.867 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-16-1655321548863 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:32:28.868 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-17-1655321548864 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:32:28.870 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-18-1655321548865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:32:28.871 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-15-1655321548861 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:32:28.897 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-19-1655321548893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:32:28.898 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-21-1655321548893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:32:28.898 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-20-1655321548893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:32:28.912 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-22-1655321548910 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:32:28.973 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-23-1655321548941 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:32:29.044 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-24-1655321549040 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:32:29.060 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-25-1655321549057 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:32:29.975 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-26-1655321549973 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture Response 200 OK +2022-06-15/15:32:30.052 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-27-1655321550050 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:32:30.067 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-29-1655321550064 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:32:30.068 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-28-1655321550061 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:32:30.106 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-31-1655321550103 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:32:30.106 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-30-1655321550103 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:32:30.113 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-33-1655321550109 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:32:30.146 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-32-1655321550103 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:32:30.177 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-34-1655321550174 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:32:30.192 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-35-1655321550190 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:32:30.233 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-36-1655321550231 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:32:30.240 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-38-1655321550234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:32:30.241 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-37-1655321550234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:32:30.240 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-40-1655321550234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:32:30.242 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-39-1655321550234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:32:30.242 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-41-1655321550234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:32:30.247 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-42-1655321550239 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:32:30.276 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-43-1655321550273 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:32:30.276 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-45-1655321550273 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:32:30.276 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-44-1655321550273 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:32:30.292 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-46-1655321550290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:32:30.361 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-47-1655321550328 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:32:30.444 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-48-1655321550441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:32:30.463 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-49-1655321550460 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:32:31.407 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-50-1655321551401 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:32:31.449 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-51-1655321551443 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:32:31.453 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-52-1655321551448 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:32:31.457 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-53-1655321551455 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:32:31.495 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-54-1655321551494 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:32:31.495 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-56-1655321551494 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:32:31.498 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-57-1655321551496 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:32:31.529 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-55-1655321551494 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:32:31.559 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-58-1655321551558 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:32:31.579 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-59-1655321551575 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:32:31.622 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-61-1655321551620 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:32:31.622 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-60-1655321551620 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:32:31.625 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-62-1655321551623 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:32:31.627 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-63-1655321551624 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:32:31.628 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-64-1655321551626 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:32:31.631 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-66-1655321551629 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:32:31.633 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-65-1655321551629 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:32:31.661 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-68-1655321551659 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:32:31.662 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-69-1655321551660 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:32:31.662 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-67-1655321551659 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:32:31.677 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-70-1655321551676 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:32:31.730 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-71-1655321551708 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:32:31.799 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-72-1655321551797 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:32:31.813 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-73-1655321551811 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:32:32.752 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-76-1655321552750 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:32:32.752 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-74-1655321552750 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:32:32.779 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-75-1655321552750 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:32:35.531 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-77-1655321555277 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /change-theme Response 302 Found +2022-06-15/15:32:35.549 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-78-1655321555544 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:32:35.591 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-79-1655321555589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:32:35.601 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-80-1655321555597 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:32:35.602 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-81-1655321555599 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:32:35.644 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-83-1655321555643 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:32:35.644 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-84-1655321555643 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:32:35.647 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-85-1655321555645 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:32:35.671 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-82-1655321555643 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:32:35.723 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-86-1655321555721 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:32:35.737 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-87-1655321555735 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:32:35.782 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-88-1655321555780 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:32:35.782 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-89-1655321555780 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:32:35.783 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-90-1655321555780 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:32:35.783 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-91-1655321555781 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:32:35.785 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-92-1655321555783 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:32:35.785 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-94-1655321555783 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:32:35.786 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-93-1655321555783 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:32:35.815 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-95-1655321555813 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:32:35.815 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-97-1655321555813 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:32:35.815 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-96-1655321555813 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:32:35.834 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-98-1655321555833 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:32:35.892 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-99-1655321555871 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:32:35.962 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-100-1655321555960 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:32:35.978 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-101-1655321555977 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:32:36.635 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-102-1655321556633 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:32:36.667 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-103-1655321556666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:32:36.676 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-104-1655321556672 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:32:36.677 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-105-1655321556676 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:32:36.717 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-107-1655321556715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:32:36.717 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-108-1655321556716 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:32:36.723 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-109-1655321556720 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:32:36.746 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-106-1655321556715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:32:36.793 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-110-1655321556792 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:32:36.809 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-111-1655321556807 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:32:36.854 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-112-1655321556853 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:32:36.856 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-113-1655321556854 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:32:36.857 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-114-1655321556855 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:32:36.858 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-115-1655321556856 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:32:36.859 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-116-1655321556856 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:32:36.859 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-117-1655321556856 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:32:36.862 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-118-1655321556857 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:32:36.893 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-120-1655321556892 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:32:36.893 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-119-1655321556892 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:32:36.893 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-121-1655321556892 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:32:36.909 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-122-1655321556907 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:32:36.965 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-123-1655321556945 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:32:37.058 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-124-1655321557056 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:32:37.072 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-125-1655321557070 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:33:39.386 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:33:39.453 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:33:39.455 [main] I (ktor.application) - Application started in 0.077 seconds. +2022-06-15/15:33:39.455 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:33:39.459 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:33:39.510 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:33:39.510 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:33:39.510 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:33:39.511 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:33:39.511 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:33:39.511 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:33:39.512 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:33:39.512 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:33:39.512 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:33:39.512 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:33:39.512 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:33:39.513 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:33:39.513 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:33:39.514 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:33:39.514 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:33:39.514 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:33:39.515 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:33:40.598 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:33:40.608 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:33:40.608 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:33:40.612 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:33:40.612 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:33:40.616 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:33:40.659 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 2336 (auto-detected) +2022-06-15/15:33:40.660 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:33:40.661 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:33:41.702 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:33:41.703 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:33:42.787 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:33:42.795 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:33:42.795 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:33:42.811 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:33:42.812 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:33:42.820 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:33:42.820 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:33:42.820 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:33:44.776 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:33:44.776 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:33:44.777 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@7c81023b +2022-06-15/15:33:44.837 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:33:44.837 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:33:44.837 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:33:44.837 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:33:44.948 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321624886 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:33:45.046 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321624984 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:33:45.046 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-3-1655321624999 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:33:45.052 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-4-1655321624999 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:33:45.091 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655321625088 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:33:45.091 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-6-1655321625088 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:33:45.097 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655321625093 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:33:45.152 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655321625088 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:33:45.175 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-9-1655321625173 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:33:45.199 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-10-1655321625194 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:33:45.249 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-12-1655321625242 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:33:45.249 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-11-1655321625242 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:33:45.252 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-14-1655321625244 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:33:45.252 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-13-1655321625244 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:33:45.260 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-16-1655321625255 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:33:45.261 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-17-1655321625256 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:33:45.262 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-15-1655321625253 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:33:45.287 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-18-1655321625284 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:33:45.287 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-20-1655321625284 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:33:45.287 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-19-1655321625284 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:33:45.301 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-21-1655321625299 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:33:45.366 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-22-1655321625331 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:33:45.477 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-23-1655321625439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:33:45.575 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-24-1655321625489 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:33:46.499 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-25-1655321626492 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:33:46.545 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-26-1655321626541 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:33:46.555 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-28-1655321626553 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:33:46.557 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-27-1655321626551 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:33:46.599 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-31-1655321626596 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:33:46.600 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-30-1655321626596 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:33:46.607 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-32-1655321626599 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:33:46.645 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-29-1655321626596 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:33:46.668 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-33-1655321626666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:33:46.686 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-34-1655321626682 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:33:46.856 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-36-1655321626729 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:33:46.856 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-39-1655321626730 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:33:46.856 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-35-1655321626729 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:33:46.856 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-37-1655321626729 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:33:46.856 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-38-1655321626729 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:33:46.857 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-40-1655321626732 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:33:46.861 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-41-1655321626857 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:33:46.894 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-43-1655321626890 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:33:46.895 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-44-1655321626890 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:33:46.895 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-42-1655321626890 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:33:46.911 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-45-1655321626910 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:33:46.981 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-46-1655321626947 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:33:47.058 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-47-1655321627056 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:33:47.076 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-48-1655321627074 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:33:47.913 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-49-1655321627819 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language.txt Response 200 OK +2022-06-15/15:33:47.954 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-50-1655321627950 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:33:47.973 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-51-1655321627970 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:33:47.983 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-52-1655321627981 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:33:48.011 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-53-1655321628009 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:33:48.011 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-55-1655321628009 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:33:48.020 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-56-1655321628018 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/font/tylan-language-alphabet-3.woff Response 200 OK +2022-06-15/15:33:48.046 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-54-1655321628009 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:33:48.058 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-57-1655321628056 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:33:48.266 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-58-1655321628264 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:33:48.314 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-59-1655321628309 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:33:48.394 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-61-1655321628391 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:33:48.394 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-62-1655321628392 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:33:48.394 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-60-1655321628391 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:33:48.396 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-63-1655321628393 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:33:48.396 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-64-1655321628394 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:33:48.396 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-65-1655321628394 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:33:48.398 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-66-1655321628394 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:33:48.439 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-67-1655321628437 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:33:48.440 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-68-1655321628437 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:33:48.440 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-69-1655321628438 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:33:48.457 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-70-1655321628455 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:33:48.540 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-71-1655321628508 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:33:48.613 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-72-1655321628611 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:33:48.630 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-73-1655321628629 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:34:18.211 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-74-1655321658210 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:34:18.262 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-75-1655321658261 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:34:18.273 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-77-1655321658271 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:34:18.273 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-76-1655321658269 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:34:18.316 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-78-1655321658314 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel-dark.svg Response 200 OK +2022-06-15/15:34:18.316 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-80-1655321658314 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link-dark.svg Response 200 OK +2022-06-15/15:34:18.318 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-81-1655321658316 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:34:18.342 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-79-1655321658314 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background-dark.jpg Response 200 OK +2022-06-15/15:34:18.379 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-82-1655321658379 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:34:18.398 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-83-1655321658396 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:34:18.440 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-86-1655321658439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:34:18.440 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-85-1655321658438 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:34:18.440 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-84-1655321658438 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:34:18.443 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-88-1655321658442 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:34:18.443 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-87-1655321658441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:34:18.444 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-89-1655321658442 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:34:18.446 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-90-1655321658442 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:34:18.477 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-92-1655321658475 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:34:18.478 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-93-1655321658475 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:34:18.478 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-91-1655321658475 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:34:18.494 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-94-1655321658492 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:34:18.545 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-95-1655321658524 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:34:18.610 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-96-1655321658610 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:34:18.627 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-97-1655321658626 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:34:19.136 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-98-1655321659134 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:34:19.136 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-100-1655321659134 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:34:19.162 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-99-1655321659134 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:34:19.778 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-101-1655321659552 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /change-theme Response 302 Found +2022-06-15/15:34:19.802 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-102-1655321659800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:34:19.845 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-103-1655321659843 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:34:19.849 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-104-1655321659846 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:34:19.853 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-105-1655321659851 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:34:19.903 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-107-1655321659901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:34:19.903 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-108-1655321659901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:34:19.909 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-109-1655321659907 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:34:19.931 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-106-1655321659901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:34:19.990 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-110-1655321659987 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:34:20.006 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-111-1655321660004 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:34:20.074 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-112-1655321660073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:34:20.074 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-114-1655321660073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:34:20.074 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-113-1655321660073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:34:20.075 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-115-1655321660073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:34:20.075 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-116-1655321660074 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:34:20.077 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-117-1655321660075 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:34:20.079 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-118-1655321660075 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:34:20.145 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-119-1655321660142 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:34:20.145 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-120-1655321660142 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:34:20.147 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-121-1655321660145 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:34:20.236 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-122-1655321660235 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:34:20.294 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-123-1655321660272 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:34:20.359 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-124-1655321660357 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:34:20.372 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-125-1655321660371 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:34:20.539 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-126-1655321660537 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:34:20.586 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-127-1655321660582 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:34:20.601 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-128-1655321660599 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:34:20.610 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-129-1655321660608 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:34:20.639 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-131-1655321660638 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:34:20.639 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-132-1655321660638 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:34:20.642 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-133-1655321660640 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:34:20.669 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-130-1655321660638 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:34:20.708 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-134-1655321660706 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:34:20.722 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-135-1655321660719 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:34:20.776 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-136-1655321660774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:34:20.776 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-137-1655321660774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:34:20.777 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-138-1655321660774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:34:20.778 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-139-1655321660774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:34:20.778 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-140-1655321660776 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:34:20.779 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-141-1655321660776 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:34:20.781 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-142-1655321660777 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:34:20.823 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-144-1655321660821 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:34:20.823 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-145-1655321660821 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:34:20.823 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-143-1655321660821 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:34:20.842 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-146-1655321660841 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:34:20.892 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-147-1655321660874 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:34:20.958 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-148-1655321660956 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:34:20.972 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-149-1655321660971 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:34:49.585 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:34:49.660 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:34:49.661 [main] I (ktor.application) - Application started in 0.083 seconds. +2022-06-15/15:34:49.661 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:34:49.666 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:34:49.714 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:34:49.714 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:34:49.715 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:34:49.715 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:34:49.716 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:34:49.716 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:34:49.716 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:34:49.716 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:34:49.716 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:34:49.716 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:34:49.717 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:34:49.717 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:34:49.717 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:34:49.719 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:34:49.719 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:34:49.719 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:34:49.719 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:34:50.863 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:34:50.875 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:34:50.875 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:34:50.880 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:34:50.880 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:34:50.885 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:34:50.928 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 20336 (auto-detected) +2022-06-15/15:34:50.930 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:34:50.930 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:34:51.975 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:34:51.975 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:34:53.103 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:34:53.111 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:34:53.111 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:34:53.127 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:34:53.128 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:34:53.136 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:34:53.136 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:34:53.136 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:35:04.227 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:35:04.228 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:35:04.229 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@7c81023b +2022-06-15/15:35:04.285 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:35:04.285 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:35:04.285 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:35:04.285 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:35:04.394 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321704330 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:35:04.499 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655321704455 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:35:04.499 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321704435 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:35:04.505 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321704453 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:35:04.545 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-6-1655321704542 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:35:04.547 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-7-1655321704542 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:35:04.553 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655321704549 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:35:04.606 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655321704542 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:35:04.628 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-9-1655321704626 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:35:04.647 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-10-1655321704643 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:35:04.698 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-11-1655321704692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:35:04.698 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-13-1655321704693 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:35:04.698 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-12-1655321704692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:35:04.701 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-14-1655321704693 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:35:04.707 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-16-1655321704702 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:35:04.711 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-17-1655321704705 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:35:04.712 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-15-1655321704701 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:35:04.740 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-18-1655321704738 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:35:04.741 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-19-1655321704738 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:35:04.742 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-20-1655321704738 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:35:04.755 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-21-1655321704753 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:35:04.824 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-22-1655321704790 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:35:04.890 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-23-1655321704887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:35:04.904 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-24-1655321704901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:35:05.236 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-25-1655321705234 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places Response 200 OK +2022-06-15/15:35:05.300 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-27-1655321705297 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:35:05.301 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-26-1655321705292 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:35:05.308 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-28-1655321705306 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:35:05.344 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-31-1655321705341 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:35:05.344 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-30-1655321705341 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:35:05.347 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-32-1655321705344 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:35:05.385 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-29-1655321705340 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:35:05.413 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-33-1655321705410 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:35:05.433 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-34-1655321705430 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:35:05.477 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-37-1655321705473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:35:05.477 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-36-1655321705473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:35:05.477 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-35-1655321705473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:35:05.480 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-40-1655321705477 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:35:05.480 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-38-1655321705474 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:35:05.481 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-39-1655321705477 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:35:05.488 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-41-1655321705478 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:35:05.514 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-43-1655321705511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:35:05.514 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-44-1655321705511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:35:05.514 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-42-1655321705511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:35:05.529 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-45-1655321705528 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:35:05.590 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-46-1655321705561 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:35:05.672 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-47-1655321705670 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:35:05.752 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-48-1655321705749 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:35:05.926 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-49-1655321705887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places/milky-way.txt Response 200 OK +2022-06-15/15:35:05.968 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-50-1655321705964 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:35:06.004 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-51-1655321706002 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:35:06.180 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-60-1655321706175 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:35:06.383 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-62-1655321706334 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:35:06.605 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-52-1655321706160 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-masra-draetsen.png Response 404 Not Found +2022-06-15/15:35:06.605 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-57-1655321706162 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-fulkreykk-1.png Response 404 Not Found +2022-06-15/15:35:06.606 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-53-1655321706160 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-chaebodes-star-empire.png Response 404 Not Found +2022-06-15/15:35:06.606 [eventLoopGroupProxy-4-8] I (ktor.application) - Call #call-59-1655321706172 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-ilkhan-commune.png Response 404 Not Found +2022-06-15/15:35:06.607 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-54-1655321706160 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-isarnareykk.png Response 404 Not Found +2022-06-15/15:35:06.607 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-58-1655321706172 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-terran-revolutionary-republic.png Response 404 Not Found +2022-06-15/15:35:06.607 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-63-1655321706603 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:35:06.607 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-61-1655321706177 Client unknown `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-fulkreykk-2.png Response 404 Not Found +2022-06-15/15:35:06.607 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-56-1655321706162 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-tylan-theocracy.png Response 404 Not Found +2022-06-15/15:35:06.608 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-64-1655321706603 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:35:06.609 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-55-1655321706162 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/flag-arkant-horde.png Response 404 Not Found +2022-06-15/15:35:06.609 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-65-1655321706607 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:35:06.647 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-66-1655321706645 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:35:06.813 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-67-1655321706809 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:35:06.889 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-68-1655321706886 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:35:06.889 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-69-1655321706886 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:35:06.891 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-70-1655321706888 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:35:06.893 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-72-1655321706891 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:35:06.894 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-71-1655321706889 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:35:06.895 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-73-1655321706893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:35:06.902 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-74-1655321706895 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:35:06.942 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-76-1655321706940 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:35:06.943 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-77-1655321706941 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:35:06.944 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-75-1655321706940 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:35:06.963 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-78-1655321706961 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:35:07.671 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-79-1655321707649 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:35:07.735 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-80-1655321707733 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:35:07.746 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-81-1655321707745 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:35:14.985 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-82-1655321714939 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-felinae-felices.png Response 200 OK +2022-06-15/15:35:15.652 [eventLoopGroupProxy-4-10] I (ktor.application) - Call #call-83-1655321715649 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /favicon.ico Response 404 Not Found +2022-06-15/15:35:17.348 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-84-1655321717344 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:35:17.405 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-85-1655321717401 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:35:17.408 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-86-1655321717405 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:35:17.410 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-87-1655321717409 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:35:17.454 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-90-1655321717452 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:35:17.454 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-89-1655321717452 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:35:17.457 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-91-1655321717456 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:35:17.479 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-88-1655321717452 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:35:17.523 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-92-1655321717519 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:35:17.539 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-93-1655321717537 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:35:17.583 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-94-1655321717582 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:35:17.585 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-95-1655321717583 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:35:17.585 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-96-1655321717583 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:35:17.585 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-98-1655321717584 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:35:17.586 [eventLoopGroupProxy-4-9] I (ktor.application) - Call #call-97-1655321717584 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:35:17.588 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-99-1655321717586 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:35:17.589 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-100-1655321717586 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:35:17.620 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-101-1655321717618 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:35:17.620 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-103-1655321717618 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:35:17.620 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-102-1655321717618 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:35:17.635 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-104-1655321717633 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:35:17.687 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-105-1655321717667 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:35:17.754 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-106-1655321717753 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:35:17.769 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-107-1655321717767 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:37:14.914 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-108-1655321834912 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:37:14.946 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-109-1655321834945 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:37:14.952 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-110-1655321834949 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:37:14.955 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-111-1655321834954 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:37:14.998 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-112-1655321834996 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:37:15.000 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-114-1655321834998 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:37:15.002 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-115-1655321835000 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:37:15.026 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-113-1655321834996 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:37:15.083 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-116-1655321835082 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:37:15.100 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-117-1655321835098 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:37:15.142 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-120-1655321835140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:37:15.143 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-119-1655321835140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:37:15.143 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-118-1655321835140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:37:15.146 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-121-1655321835141 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:37:15.147 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-122-1655321835145 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:37:15.147 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-123-1655321835146 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:37:15.149 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-124-1655321835146 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:37:15.182 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-126-1655321835179 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:37:15.182 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-127-1655321835180 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:37:15.182 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-125-1655321835179 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:37:15.200 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-128-1655321835198 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:37:15.254 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-129-1655321835232 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:37:15.330 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-130-1655321835328 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:37:15.346 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-131-1655321835344 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:37:16.211 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-132-1655321836210 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics Response 200 OK +2022-06-15/15:37:16.293 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-133-1655321836292 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:37:16.297 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-134-1655321836293 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:37:16.297 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-135-1655321836295 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:37:16.358 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-137-1655321836356 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:37:16.358 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-138-1655321836356 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:37:16.363 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-139-1655321836361 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:37:16.383 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-136-1655321836356 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:37:16.429 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-140-1655321836427 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:37:16.451 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-141-1655321836449 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:37:16.511 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-142-1655321836509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:37:16.511 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-147-1655321836510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:37:16.511 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-146-1655321836510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:37:16.512 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-144-1655321836509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:37:16.512 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-143-1655321836509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:37:16.512 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-145-1655321836509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:37:16.516 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-148-1655321836512 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:37:16.592 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-149-1655321836589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:37:16.592 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-150-1655321836589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:37:16.592 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-151-1655321836589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:37:16.632 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-152-1655321836631 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:37:16.688 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-153-1655321836664 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:37:16.753 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-154-1655321836751 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:37:16.767 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-155-1655321836765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:37:17.974 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-156-1655321836881 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:37:18.017 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-157-1655321838013 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:37:18.037 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-158-1655321838035 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:37:18.092 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-161-1655321838090 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperials.png Response 404 Not Found +2022-06-15/15:37:18.092 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-159-1655321838090 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-freedom.png Response 404 Not Found +2022-06-15/15:37:18.092 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-160-1655321838090 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-whigs.png Response 404 Not Found +2022-06-15/15:37:18.092 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-162-1655321838091 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-tylan-peoples.png Response 404 Not Found +2022-06-15/15:37:18.093 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-163-1655321838091 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-workers-left.png Response 404 Not Found +2022-06-15/15:37:18.093 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-164-1655321838091 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-new-republicans.png Response 404 Not Found +2022-06-15/15:37:18.095 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-165-1655321838093 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-liberals.png Response 404 Not Found +2022-06-15/15:37:18.096 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-166-1655321838094 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-union.png Response 404 Not Found +2022-06-15/15:37:18.096 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-168-1655321838094 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperial-democrats.png Response 404 Not Found +2022-06-15/15:37:18.096 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-167-1655321838094 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-royalists.png Response 404 Not Found +2022-06-15/15:37:18.096 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-169-1655321838095 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-reform.png Response 404 Not Found +2022-06-15/15:37:18.098 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-171-1655321838097 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-republicans.png Response 404 Not Found +2022-06-15/15:37:18.098 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-170-1655321838097 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-all-peoples.png Response 404 Not Found +2022-06-15/15:37:18.106 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-172-1655321838104 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:37:18.133 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-175-1655321838131 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:37:18.133 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-174-1655321838131 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:37:18.146 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-176-1655321838145 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:37:18.162 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-173-1655321838131 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:37:18.320 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-177-1655321838317 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:37:18.355 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-178-1655321838350 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:37:18.400 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-179-1655321838398 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:37:18.400 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-181-1655321838399 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:37:18.400 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-180-1655321838399 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:37:18.402 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-183-1655321838400 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:37:18.402 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-182-1655321838400 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:37:18.403 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-184-1655321838401 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:37:18.404 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-185-1655321838401 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:37:18.435 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-187-1655321838433 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:37:18.435 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-186-1655321838433 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:37:18.435 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-188-1655321838433 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:37:18.449 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-189-1655321838448 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:37:18.495 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-190-1655321838476 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:37:18.558 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-191-1655321838556 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:37:18.570 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-192-1655321838569 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:37:21.915 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-193-1655321841910 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:37:24.948 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-194-1655321844129 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:37:24.974 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-195-1655321844971 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:37:25.004 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-196-1655321845003 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:37:25.055 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-197-1655321845054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-freedom.png Response 404 Not Found +2022-06-15/15:37:25.055 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-200-1655321845054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-tylan-peoples.png Response 404 Not Found +2022-06-15/15:37:25.055 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-198-1655321845054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-whigs.png Response 404 Not Found +2022-06-15/15:37:25.055 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-199-1655321845054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperials.png Response 404 Not Found +2022-06-15/15:37:25.055 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-201-1655321845054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-workers-left.png Response 404 Not Found +2022-06-15/15:37:25.055 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-202-1655321845054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-new-republicans.png Response 404 Not Found +2022-06-15/15:37:25.057 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-203-1655321845055 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-union.png Response 404 Not Found +2022-06-15/15:37:25.058 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-204-1655321845056 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-liberals.png Response 404 Not Found +2022-06-15/15:37:25.057 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-205-1655321845056 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-royalists.png Response 404 Not Found +2022-06-15/15:37:25.058 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-206-1655321845056 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperial-democrats.png Response 404 Not Found +2022-06-15/15:37:25.058 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-207-1655321845057 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-reform.png Response 404 Not Found +2022-06-15/15:37:25.060 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-209-1655321845059 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-all-peoples.png Response 404 Not Found +2022-06-15/15:37:25.060 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-208-1655321845058 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-republicans.png Response 404 Not Found +2022-06-15/15:37:25.067 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-210-1655321845066 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:37:25.093 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-212-1655321845092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:37:25.094 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-213-1655321845092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:37:25.103 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-214-1655321845101 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:37:25.129 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-211-1655321845092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:37:25.289 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-215-1655321845284 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:37:25.327 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-216-1655321845322 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:37:25.375 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-219-1655321845374 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:37:25.375 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-217-1655321845373 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:37:25.376 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-218-1655321845373 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:37:25.376 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-220-1655321845374 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:37:25.376 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-221-1655321845374 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:37:25.376 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-222-1655321845375 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:37:25.380 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-223-1655321845376 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:37:25.413 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-225-1655321845411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:37:25.413 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-224-1655321845411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:37:25.413 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-226-1655321845412 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:37:25.428 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-227-1655321845428 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:37:25.475 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-228-1655321845458 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:37:25.540 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-229-1655321845537 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:37:25.556 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-230-1655321845554 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:37:26.800 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-231-1655321846795 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:37:29.840 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-232-1655321849017 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:37:31.626 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-233-1655321850996 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:37:31.681 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-234-1655321851679 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:37:31.735 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-235-1655321851733 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-whigs.png Response 404 Not Found +2022-06-15/15:37:31.736 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-238-1655321851733 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperials.png Response 404 Not Found +2022-06-15/15:37:31.736 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-239-1655321851734 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-workers-left.png Response 404 Not Found +2022-06-15/15:37:31.738 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-236-1655321851733 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-freedom.png Response 404 Not Found +2022-06-15/15:37:31.738 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-237-1655321851733 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-tylan-peoples.png Response 404 Not Found +2022-06-15/15:37:31.739 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-241-1655321851737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-liberals.png Response 404 Not Found +2022-06-15/15:37:31.740 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-240-1655321851737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-new-republicans.png Response 404 Not Found +2022-06-15/15:37:31.740 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-242-1655321851739 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-union.png Response 404 Not Found +2022-06-15/15:37:31.743 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-243-1655321851739 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:37:31.747 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-248-1655321851745 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-republicans.png Response 404 Not Found +2022-06-15/15:37:31.747 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-246-1655321851744 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-royalists.png Response 404 Not Found +2022-06-15/15:37:31.747 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-247-1655321851744 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperial-democrats.png Response 404 Not Found +2022-06-15/15:37:31.747 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-244-1655321851744 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-all-peoples.png Response 404 Not Found +2022-06-15/15:37:31.747 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-245-1655321851744 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-reform.png Response 404 Not Found +2022-06-15/15:37:31.782 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-249-1655321851781 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:37:31.958 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-250-1655321851956 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-whigs.png Response 404 Not Found +2022-06-15/15:37:31.958 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-253-1655321851957 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-tylan-peoples.png Response 404 Not Found +2022-06-15/15:37:31.958 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-252-1655321851956 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperials.png Response 404 Not Found +2022-06-15/15:37:31.958 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-251-1655321851956 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-freedom.png Response 404 Not Found +2022-06-15/15:37:31.959 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-255-1655321851957 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-new-republicans.png Response 404 Not Found +2022-06-15/15:37:31.959 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-254-1655321851957 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-workers-left.png Response 404 Not Found +2022-06-15/15:37:31.961 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-256-1655321851959 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-union.png Response 404 Not Found +2022-06-15/15:37:31.961 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-259-1655321851960 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-imperial-democrats.png Response 404 Not Found +2022-06-15/15:37:31.961 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-258-1655321851960 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-liberals.png Response 404 Not Found +2022-06-15/15:37:31.963 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-260-1655321851961 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-republicans.png Response 404 Not Found +2022-06-15/15:37:31.963 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-257-1655321851960 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-royalists.png Response 404 Not Found +2022-06-15/15:37:31.964 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-261-1655321851962 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-all-peoples.png Response 404 Not Found +2022-06-15/15:37:31.964 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-262-1655321851962 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/party-democratic-reform.png Response 404 Not Found +2022-06-15/15:37:31.965 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-265-1655321851964 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:37:31.965 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-264-1655321851963 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:37:31.990 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-263-1655321851962 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:37:32.008 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-266-1655321852007 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:37:32.284 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-267-1655321852282 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:37:32.310 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-268-1655321852308 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:37:32.386 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-269-1655321852384 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:37:32.386 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-270-1655321852385 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:37:32.387 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-273-1655321852386 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:37:32.387 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-271-1655321852385 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:37:32.388 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-272-1655321852385 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:37:32.388 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-274-1655321852386 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:37:32.398 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-275-1655321852395 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:37:32.526 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-276-1655321852524 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:37:32.527 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-277-1655321852524 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:37:32.528 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-278-1655321852527 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:37:32.576 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-279-1655321852575 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:37:32.659 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-280-1655321852639 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:37:32.730 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-281-1655321852728 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:37:32.749 [eventLoopGroupProxy-4-12] I (ktor.application) - Call #call-282-1655321852747 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:38:17.547 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:38:17.628 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:38:17.632 [main] I (ktor.application) - Application started in 0.091 seconds. +2022-06-15/15:38:17.633 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:38:17.640 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:38:17.725 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:38:17.725 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:38:17.727 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:38:17.727 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:38:17.727 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:38:17.728 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:38:17.728 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:38:17.728 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:38:17.728 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:38:17.728 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:38:17.729 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:38:17.729 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:38:17.730 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:38:17.731 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:38:17.731 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:38:17.732 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:38:17.732 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:38:19.068 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:38:19.082 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:38:19.083 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:38:19.088 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:38:19.088 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:38:19.093 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:38:19.181 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 16736 (auto-detected) +2022-06-15/15:38:19.182 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:38:19.182 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:38:20.356 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:38:20.356 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:38:21.687 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:38:21.695 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:38:21.696 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:38:21.731 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:38:21.732 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:38:21.732 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:38:21.732 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:38:21.732 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:38:21.732 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:38:21.732 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:38:21.733 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:38:21.733 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:38:21.733 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:38:21.733 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:38:21.733 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:38:21.743 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:38:21.743 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:38:21.743 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:38:33.087 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:38:33.088 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:38:33.090 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@1677a9db +2022-06-15/15:38:33.222 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:38:33.222 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:38:33.222 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:38:33.222 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:38:35.464 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655321913304 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:38:35.634 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655321915504 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:38:35.641 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655321915516 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:38:35.716 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-8-1655321915692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-tylan-peoples.png Response 200 OK +2022-06-15/15:38:35.722 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-10-1655321915718 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:38:35.741 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-9-1655321915693 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-union.png Response 200 OK +2022-06-15/15:38:35.741 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-6-1655321915691 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-workers-left.png Response 200 OK +2022-06-15/15:38:35.754 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655321915677 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperials.png Response 200 OK +2022-06-15/15:38:35.761 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655321915691 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-new-republicans.png Response 200 OK +2022-06-15/15:38:35.790 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-12-1655321915743 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperial-democrats.png Response 200 OK +2022-06-15/15:38:35.806 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-4-1655321915676 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-whigs.png Response 200 OK +2022-06-15/15:38:35.826 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-11-1655321915724 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-liberals.png Response 200 OK +2022-06-15/15:38:35.863 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-13-1655321915743 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-royalists.png Response 200 OK +2022-06-15/15:38:35.899 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-19-1655321915867 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:38:35.901 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-17-1655321915809 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:38:35.907 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-15-1655321915762 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:38:35.910 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-16-1655321915792 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:38:35.915 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-20-1655321915903 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:38:35.935 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-14-1655321915757 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-republicans.png Response 200 OK +2022-06-15/15:38:35.944 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-21-1655321915935 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:38:36.055 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-18-1655321915838 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:38:36.293 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-22-1655321916289 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:38:36.337 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-23-1655321916331 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:38:36.455 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-26-1655321916448 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:38:36.455 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-27-1655321916449 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:38:36.457 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-24-1655321916446 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:38:36.459 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-25-1655321916447 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:38:36.461 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-28-1655321916451 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:38:36.464 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-29-1655321916451 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:38:36.472 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-30-1655321916457 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:38:36.576 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-31-1655321916528 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:38:36.578 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-33-1655321916528 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:38:36.579 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-32-1655321916528 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:38:36.615 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-34-1655321916610 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:38:36.726 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-35-1655321916676 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:38:36.841 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-36-1655321916836 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:38:36.874 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-37-1655321916870 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:39:30.962 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-38-1655321970954 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /change-theme Response 200 OK +2022-06-15/15:39:31.022 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-39-1655321971019 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:39:31.032 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-41-1655321971028 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:39:31.035 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-40-1655321971028 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:39:31.082 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-44-1655321971078 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:39:31.082 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-43-1655321971078 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:39:31.085 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-45-1655321971082 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:39:31.120 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-42-1655321971077 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:39:31.176 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-46-1655321971174 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:39:31.191 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-47-1655321971188 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:39:31.299 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-48-1655321971245 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:39:31.299 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-50-1655321971245 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:39:31.299 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-49-1655321971245 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:39:31.303 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-53-1655321971297 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:39:31.304 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-51-1655321971247 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:39:31.305 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-52-1655321971248 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:39:31.312 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-54-1655321971301 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:39:31.350 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-55-1655321971348 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:39:31.352 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-57-1655321971348 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:39:31.352 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-56-1655321971348 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:39:31.374 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-58-1655321971370 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:39:31.438 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-59-1655321971411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:39:31.534 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-60-1655321971529 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:39:31.550 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-61-1655321971548 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:39:33.120 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-62-1655321973117 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:39:33.177 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-63-1655321973174 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:39:33.188 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-65-1655321973185 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:39:33.191 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-64-1655321973185 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:39:33.245 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-67-1655321973243 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:39:33.248 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-68-1655321973245 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:39:33.250 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-69-1655321973247 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:39:33.285 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-66-1655321973243 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:39:33.334 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-70-1655321973333 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:39:33.373 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-71-1655321973370 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:39:33.419 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-72-1655321973416 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:39:33.419 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-73-1655321973416 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:39:33.420 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-74-1655321973416 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:39:33.422 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-76-1655321973417 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:39:33.422 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-75-1655321973417 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:39:33.428 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-77-1655321973420 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:39:33.431 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-78-1655321973421 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:39:33.456 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-80-1655321973453 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:39:33.456 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-81-1655321973453 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:39:33.456 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-79-1655321973453 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:39:33.471 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-82-1655321973470 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:39:33.525 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-83-1655321973503 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:39:33.674 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-84-1655321973672 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:39:33.726 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-85-1655321973723 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:39:35.541 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-86-1655321974585 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:39:35.583 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-87-1655321975579 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:39:35.603 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-88-1655321975601 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:39:35.615 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-89-1655321975614 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:39:35.696 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-93-1655321975692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-tylan-peoples.png Response 200 OK +2022-06-15/15:39:35.701 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-92-1655321975692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperials.png Response 200 OK +2022-06-15/15:39:35.701 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-95-1655321975693 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-new-republicans.png Response 200 OK +2022-06-15/15:39:35.701 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-91-1655321975692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-whigs.png Response 200 OK +2022-06-15/15:39:35.704 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-90-1655321975692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:39:35.709 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-96-1655321975698 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-union.png Response 200 OK +2022-06-15/15:39:35.712 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-94-1655321975693 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-workers-left.png Response 200 OK +2022-06-15/15:39:35.713 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-100-1655321975710 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:39:35.715 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-99-1655321975703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperial-democrats.png Response 200 OK +2022-06-15/15:39:35.715 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-98-1655321975702 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-liberals.png Response 200 OK +2022-06-15/15:39:35.716 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-101-1655321975713 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:39:35.721 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-97-1655321975702 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-royalists.png Response 200 OK +2022-06-15/15:39:35.722 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-104-1655321975717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:39:35.722 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-103-1655321975716 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:39:35.725 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-102-1655321975714 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-republicans.png Response 200 OK +2022-06-15/15:39:35.731 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-106-1655321975727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:39:35.779 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-105-1655321975717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:39:35.822 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-107-1655321975820 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:39:35.980 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-108-1655321975975 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:39:36.054 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-111-1655321976053 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:39:36.054 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-109-1655321976052 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:39:36.055 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-112-1655321976053 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:39:36.055 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-110-1655321976052 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:39:36.056 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-113-1655321976054 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:39:36.057 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-114-1655321976055 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:39:36.060 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-115-1655321976055 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:39:36.094 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-117-1655321976092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:39:36.094 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-116-1655321976092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:39:36.097 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-118-1655321976095 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:39:36.109 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-119-1655321976107 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:39:36.161 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-120-1655321976140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:39:36.228 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-121-1655321976227 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:39:36.241 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-122-1655321976239 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:39:44.867 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-123-1655321984865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:39:59.212 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-124-1655321999211 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics Response 200 OK +2022-06-15/15:39:59.257 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-125-1655321999255 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:39:59.267 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-126-1655321999262 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:39:59.267 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-127-1655321999266 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:39:59.353 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-130-1655321999351 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:39:59.353 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-129-1655321999351 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:39:59.353 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-131-1655321999351 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:39:59.383 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-128-1655321999350 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:39:59.432 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-132-1655321999430 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:39:59.452 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-133-1655321999451 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:39:59.502 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-135-1655321999500 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:39:59.502 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-134-1655321999500 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:39:59.502 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-136-1655321999501 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:39:59.503 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-137-1655321999502 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:39:59.508 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-138-1655321999506 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:39:59.509 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-139-1655321999506 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:39:59.511 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-140-1655321999506 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:39:59.542 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-141-1655321999541 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:39:59.543 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-143-1655321999542 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:39:59.543 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-142-1655321999541 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:39:59.559 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-144-1655321999558 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:39:59.605 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-145-1655321999588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:39:59.668 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-146-1655321999666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:39:59.681 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-147-1655321999679 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:40:01.060 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-148-1655322000443 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate.txt Response 200 OK +2022-06-15/15:40:01.109 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-149-1655322001106 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:40:01.114 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-150-1655322001112 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:40:01.120 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-151-1655322001119 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:40:01.200 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-155-1655322001196 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-tylan-peoples.png Response 200 OK +2022-06-15/15:40:01.202 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-153-1655322001195 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-whigs.png Response 200 OK +2022-06-15/15:40:01.204 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-157-1655322001198 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-new-republicans.png Response 200 OK +2022-06-15/15:40:01.204 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-152-1655322001195 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:40:01.206 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-154-1655322001196 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperials.png Response 200 OK +2022-06-15/15:40:01.208 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-156-1655322001197 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-workers-left.png Response 200 OK +2022-06-15/15:40:01.213 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-159-1655322001204 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-liberals.png Response 200 OK +2022-06-15/15:40:01.213 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-158-1655322001201 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-union.png Response 200 OK +2022-06-15/15:40:01.215 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-161-1655322001206 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperial-democrats.png Response 200 OK +2022-06-15/15:40:01.221 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-163-1655322001214 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:40:01.221 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-160-1655322001206 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-royalists.png Response 200 OK +2022-06-15/15:40:01.221 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-164-1655322001214 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:40:01.222 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-162-1655322001209 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-republicans.png Response 200 OK +2022-06-15/15:40:01.232 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-167-1655322001230 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:40:01.232 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-166-1655322001230 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:40:01.254 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-168-1655322001252 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:40:01.268 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-165-1655322001230 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:40:01.309 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-169-1655322001307 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:40:01.432 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-170-1655322001428 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:40:01.512 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-172-1655322001510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:40:01.512 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-171-1655322001510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:40:01.513 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-173-1655322001511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:40:01.513 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-174-1655322001511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:40:01.513 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-175-1655322001512 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:40:01.515 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-176-1655322001512 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:40:01.517 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-177-1655322001513 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:40:01.551 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-178-1655322001549 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:40:01.551 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-179-1655322001549 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:40:01.551 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-180-1655322001550 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:40:01.569 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-181-1655322001566 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:40:01.629 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-182-1655322001608 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:40:01.694 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-183-1655322001692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:40:01.706 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-184-1655322001704 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:40:03.250 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-185-1655322003247 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:40:03.291 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-186-1655322003290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:40:03.302 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-188-1655322003300 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:40:03.302 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-187-1655322003298 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:40:03.343 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-190-1655322003342 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:40:03.344 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-191-1655322003343 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:40:03.349 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-192-1655322003347 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:40:03.376 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-189-1655322003342 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:40:03.417 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-193-1655322003415 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:40:03.437 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-194-1655322003435 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:40:03.477 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-195-1655322003475 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:40:03.477 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-196-1655322003475 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:40:03.478 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-197-1655322003476 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:40:03.478 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-198-1655322003476 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:40:03.478 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-200-1655322003478 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:40:03.478 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-199-1655322003477 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:40:03.481 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-201-1655322003478 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:40:03.511 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-202-1655322003510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:40:03.511 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-204-1655322003510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:40:03.511 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-203-1655322003510 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:40:03.525 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-205-1655322003524 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:40:03.575 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-206-1655322003558 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:40:03.643 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-207-1655322003641 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:40:03.658 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-208-1655322003656 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:40:38.719 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-209-1655322038717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:40:38.787 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-210-1655322038785 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:40:38.795 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-211-1655322038792 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:40:38.800 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-212-1655322038799 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:40:38.839 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-214-1655322038837 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:40:38.839 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-215-1655322038837 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:40:38.842 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-216-1655322038840 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:40:38.865 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-213-1655322038837 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:40:38.914 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-217-1655322038912 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:40:38.930 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-218-1655322038928 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:40:38.979 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-219-1655322038978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:40:38.979 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-220-1655322038978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:40:38.979 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-221-1655322038978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:40:38.980 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-222-1655322038978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:40:38.981 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-224-1655322038980 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:40:38.981 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-223-1655322038980 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:40:38.983 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-225-1655322038980 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:40:39.015 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-226-1655322039013 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:40:39.015 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-227-1655322039013 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:40:39.015 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-228-1655322039014 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:40:39.030 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-229-1655322039028 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:40:39.081 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-230-1655322039063 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:40:39.148 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-231-1655322039147 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:40:39.164 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-232-1655322039162 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:40:39.750 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-233-1655322039689 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language Response 200 OK +2022-06-15/15:40:39.816 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-234-1655322039812 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:40:39.942 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-235-1655322039835 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:40:39.942 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-236-1655322039844 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:40:39.969 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-238-1655322039968 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:40:39.969 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-239-1655322039968 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:40:39.991 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-240-1655322039974 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/font/tylan-language-alphabet-3.woff Response 200 OK +2022-06-15/15:40:39.992 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-241-1655322039985 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:40:40.008 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-237-1655322039967 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:40:40.185 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-242-1655322040184 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:40:40.203 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-243-1655322040200 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:40:40.286 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-245-1655322040285 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:40:40.286 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-246-1655322040285 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:40:40.286 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-247-1655322040285 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:40:40.286 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-244-1655322040285 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:40:40.295 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-249-1655322040293 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:40:40.295 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-248-1655322040293 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:40:40.296 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-250-1655322040293 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:40:40.324 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-251-1655322040323 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:40:40.324 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-253-1655322040323 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:40:40.324 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-252-1655322040323 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:40:40.440 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-254-1655322040439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:40:40.498 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-255-1655322040479 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:40:40.574 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-256-1655322040573 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:40:40.586 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-257-1655322040584 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:41:04.120 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-258-1655322064106 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture/tylan-language Response 200 OK +2022-06-15/15:41:04.161 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-259-1655322064159 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:41:04.171 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-261-1655322064169 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:41:04.172 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-260-1655322064167 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:41:04.232 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-263-1655322064231 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:41:04.232 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-264-1655322064231 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:41:04.253 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-265-1655322064251 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:41:04.259 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-262-1655322064231 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:41:04.408 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-266-1655322064406 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:41:04.439 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-267-1655322064434 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:41:04.500 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-269-1655322064498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:41:04.500 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-268-1655322064498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:41:04.500 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-270-1655322064499 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:41:04.501 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-271-1655322064499 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:41:04.502 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-272-1655322064500 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:41:04.502 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-273-1655322064501 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:41:04.503 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-274-1655322064501 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:41:04.531 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-275-1655322064529 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:41:04.531 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-276-1655322064529 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:41:04.531 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-277-1655322064530 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:41:04.548 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-278-1655322064546 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:41:04.604 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-279-1655322064586 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:41:04.667 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-280-1655322064666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:41:04.681 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-281-1655322064680 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:41:06.801 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-282-1655322066033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:06.801 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-284-1655322066206 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:06.801 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-283-1655322066033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:07.191 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-285-1655322067190 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:07.849 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-286-1655322067848 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:08.218 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-287-1655322068217 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:08.999 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-288-1655322068998 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:09.202 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-289-1655322069201 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:09.544 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-290-1655322069544 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:09.800 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-291-1655322069799 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:09.832 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-292-1655322069832 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:09.973 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-293-1655322069973 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:10.407 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-294-1655322070406 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:10.582 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-295-1655322070582 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:11.214 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-296-1655322071213 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:12.698 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-297-1655322072697 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:12.878 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-298-1655322072878 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:13.639 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-299-1655322073639 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:13.905 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-300-1655322073904 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:21.535 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-301-1655322081534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request POST /tylan-lang Response 200 OK +2022-06-15/15:41:28.457 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-302-1655322088425 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:41:37.761 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-303-1655322097760 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/culture Response 200 OK +2022-06-15/15:41:37.807 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-304-1655322097807 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:41:37.815 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-305-1655322097811 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:41:37.821 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-306-1655322097819 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:41:37.870 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-309-1655322097869 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:41:37.870 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-308-1655322097869 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:41:37.872 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-310-1655322097871 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:41:37.893 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-307-1655322097869 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:41:37.940 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-311-1655322097938 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:41:37.955 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-312-1655322097954 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:41:37.999 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-313-1655322097998 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:41:37.999 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-314-1655322097998 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:41:37.999 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-315-1655322097998 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:41:38.000 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-316-1655322097999 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:41:38.002 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-317-1655322098000 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:41:38.002 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-319-1655322098000 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:41:38.004 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-318-1655322098000 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:41:38.032 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-321-1655322098031 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:41:38.036 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-320-1655322098031 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:41:38.037 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-322-1655322098032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:41:38.053 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-323-1655322098048 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:41:38.100 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-324-1655322098084 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:41:38.174 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-325-1655322098172 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:41:38.190 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-326-1655322098189 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:41:39.562 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-327-1655322099560 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:41:39.626 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-328-1655322099624 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:41:39.633 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-330-1655322099631 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:41:39.635 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-329-1655322099631 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:41:39.688 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-332-1655322099687 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:41:39.688 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-333-1655322099687 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:41:39.691 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-334-1655322099690 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:41:39.711 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-331-1655322099686 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:41:39.751 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-335-1655322099749 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:41:39.765 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-336-1655322099764 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:41:39.807 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-337-1655322099806 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:41:39.808 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-339-1655322099806 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:41:39.808 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-338-1655322099806 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:41:39.809 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-340-1655322099807 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:41:39.809 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-341-1655322099808 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:41:39.810 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-342-1655322099808 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:41:39.812 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-343-1655322099808 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:41:39.845 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-344-1655322099844 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:41:39.845 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-346-1655322099844 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:41:39.845 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-345-1655322099844 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:41:39.860 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-347-1655322099859 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:41:39.908 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-348-1655322099891 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:41:39.976 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-349-1655322099975 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:41:39.990 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-350-1655322099988 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:41:40.858 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-351-1655322100825 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places/milky-way Response 200 OK +2022-06-15/15:41:40.898 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-352-1655322100895 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:41:40.936 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-353-1655322100934 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:41:41.095 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-356-1655322101089 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-masra-draetsen.png Response 200 OK +2022-06-15/15:41:41.095 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-358-1655322101089 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-chaebodes-star-empire.png Response 200 OK +2022-06-15/15:41:41.096 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-357-1655322101089 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-isarnareykk.png Response 200 OK +2022-06-15/15:41:41.097 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-359-1655322101090 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-niska-republic.png Response 200 OK +2022-06-15/15:41:41.100 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-355-1655322101088 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-mechyrdia.png Response 200 OK +2022-06-15/15:41:41.103 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-361-1655322101096 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-theudareykk.png Response 200 OK +2022-06-15/15:41:41.103 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-360-1655322101095 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ilkhan-republic.png Response 200 OK +2022-06-15/15:41:41.104 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-363-1655322101098 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-stahlareykk.png Response 200 OK +2022-06-15/15:41:41.105 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-362-1655322101097 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-swartareykk.png Response 200 OK +2022-06-15/15:41:41.110 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-365-1655322101104 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-noctiferorum.png Response 200 OK +2022-06-15/15:41:41.111 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-364-1655322101104 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-diabolorum.png Response 200 OK +2022-06-15/15:41:41.114 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-366-1655322101105 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-viperarum.png Response 200 OK +2022-06-15/15:41:41.114 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-367-1655322101105 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-arkant-horde.png Response 200 OK +2022-06-15/15:41:41.122 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-368-1655322101111 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-tylan-theocracy.png Response 200 OK +2022-06-15/15:41:41.126 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-370-1655322101115 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-terran-revolutionary-republic.png Response 200 OK +2022-06-15/15:41:41.127 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-369-1655322101112 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-mechyrdia-protectorate.png Response 200 OK +2022-06-15/15:41:41.127 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-371-1655322101116 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ilkhan-commune.png Response 200 OK +2022-06-15/15:41:41.130 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-372-1655322101124 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-telareth-republic.png Response 200 OK +2022-06-15/15:41:41.132 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-373-1655322101127 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-drakhassi-federation.png Response 200 OK +2022-06-15/15:41:41.132 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-374-1655322101128 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ferthlon-internation.png Response 200 OK +2022-06-15/15:41:41.135 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-375-1655322101128 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-rathian-consensus.png Response 200 OK +2022-06-15/15:41:41.136 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-376-1655322101132 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ndrc.png Response 200 OK +2022-06-15/15:41:41.139 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-378-1655322101134 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ccc.png Response 200 OK +2022-06-15/15:41:41.141 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-377-1655322101133 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/logo-mjolnir-energy.png Response 200 OK +2022-06-15/15:41:41.143 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-380-1655322101137 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-lyudareykk.png Response 200 OK +2022-06-15/15:41:41.146 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-382-1655322101140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-magistrorum.png Response 200 OK +2022-06-15/15:41:41.149 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-379-1655322101136 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-res-nostra.png Response 200 OK +2022-06-15/15:41:41.151 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-383-1655322101142 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-togatorum.png Response 200 OK +2022-06-15/15:41:41.153 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-381-1655322101140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-humilitatum.png Response 200 OK +2022-06-15/15:41:41.155 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-385-1655322101151 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-lihann-empire.png Response 200 OK +2022-06-15/15:41:41.155 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-384-1655322101147 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-corsairs.png Response 200 OK +2022-06-15/15:41:41.158 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-387-1655322101155 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-fulkreykk-2.png Response 200 OK +2022-06-15/15:41:41.158 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-386-1655322101153 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-fulkreykk-1.png Response 200 OK +2022-06-15/15:41:41.158 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-389-1655322101156 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-felinae-felices.png Response 200 OK +2022-06-15/15:41:41.160 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-388-1655322101156 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-vestigium.png Response 200 OK +2022-06-15/15:41:41.166 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-392-1655322101164 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:41:41.166 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-391-1655322101164 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:41:41.170 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-393-1655322101169 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:41:41.228 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-390-1655322101164 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:41:41.256 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-394-1655322101256 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:41:41.429 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-395-1655322101427 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:41:41.635 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-396-1655322101632 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:41:41.726 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-397-1655322101725 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:41:41.726 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-398-1655322101725 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:41:41.727 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-399-1655322101726 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:41:41.728 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-401-1655322101727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:41:41.728 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-400-1655322101727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:41:41.729 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-402-1655322101728 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:41:41.730 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-403-1655322101728 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:41:41.780 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-404-1655322101778 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:41:41.781 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-406-1655322101778 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:41:41.781 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-405-1655322101778 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:41:41.814 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-407-1655322101812 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:41:41.874 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-354-1655322101088 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/map-galaxy.png Response 200 OK +2022-06-15/15:41:42.572 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-408-1655322102554 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:41:42.651 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-409-1655322102650 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:41:42.665 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-410-1655322102664 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:41:43.157 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-411-1655322102994 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/map-galaxy.png Response 200 OK +2022-06-15/15:42:39.084 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-412-1655322159081 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-masra-draetsen.png Response 200 OK +2022-06-15/15:42:39.085 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-413-1655322159083 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-niska-republic.png Response 200 OK +2022-06-15/15:42:39.085 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-414-1655322159083 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-chaebodes-star-empire.png Response 200 OK +2022-06-15/15:42:39.525 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-415-1655322159523 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:42:39.551 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-416-1655322159548 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:42:39.610 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-417-1655322159609 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:42:39.610 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-418-1655322159609 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:42:39.612 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-419-1655322159610 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:42:39.612 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-420-1655322159611 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:42:39.613 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-421-1655322159612 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:42:39.621 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-422-1655322159618 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:42:39.625 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-423-1655322159622 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:42:39.659 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-424-1655322159658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:42:39.660 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-425-1655322159658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:42:39.660 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-426-1655322159659 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:42:39.683 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-427-1655322159681 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:42:40.406 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-428-1655322160386 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:42:40.479 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-429-1655322160478 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:42:40.491 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-430-1655322160490 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:43:03.188 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-431-1655322183184 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-corsairs.png Response 200 OK +2022-06-15/15:43:05.299 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-432-1655322185297 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ndrc.png Response 200 OK +2022-06-15/15:43:53.594 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-433-1655322233593 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places Response 200 OK +2022-06-15/15:43:53.654 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-434-1655322233652 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:43:53.661 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-435-1655322233658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:43:53.668 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-436-1655322233667 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:43:53.710 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-437-1655322233708 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:43:53.710 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-438-1655322233708 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:43:53.711 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-440-1655322233710 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:43:53.736 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-439-1655322233708 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:43:53.766 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-441-1655322233765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:43:53.785 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-442-1655322233784 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:43:53.826 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-443-1655322233824 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:43:53.826 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-444-1655322233824 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:43:53.826 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-445-1655322233825 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:43:53.826 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-446-1655322233825 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:43:53.828 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-447-1655322233827 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:43:53.828 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-448-1655322233827 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:43:53.830 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-449-1655322233828 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:43:53.866 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-450-1655322233865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:43:53.866 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-452-1655322233865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:43:53.866 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-451-1655322233865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:43:53.880 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-453-1655322233879 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:43:53.933 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-454-1655322233912 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:43:54.001 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-455-1655322233999 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:43:54.016 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-456-1655322234015 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:43:54.211 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-457-1655322234208 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:43:54.253 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-458-1655322234249 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:43:54.271 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-459-1655322234269 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:43:54.278 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-460-1655322234277 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:43:54.311 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-463-1655322234310 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:43:54.311 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-462-1655322234310 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:43:54.314 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-464-1655322234312 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:43:54.335 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-461-1655322234310 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:43:54.376 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-465-1655322234375 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:43:54.394 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-466-1655322234392 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:43:54.434 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-468-1655322234433 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:43:54.434 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-467-1655322234433 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:43:54.435 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-469-1655322234434 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:43:54.436 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-470-1655322234435 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:43:54.437 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-471-1655322234436 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:43:54.437 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-472-1655322234436 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:43:54.442 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-473-1655322234439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:43:54.474 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-474-1655322234473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:43:54.475 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-475-1655322234473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:43:54.476 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-476-1655322234474 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:43:54.489 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-477-1655322234488 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:43:54.539 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-478-1655322234523 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:43:54.603 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-479-1655322234602 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:43:54.618 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-480-1655322234617 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:43:55.076 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-481-1655322235073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/mechyrdian-navy-ships.txt Response 200 OK +2022-06-15/15:43:55.118 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-482-1655322235116 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:43:55.132 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-483-1655322235131 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:43:55.137 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-484-1655322235136 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:43:55.160 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-486-1655322235159 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:43:55.160 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-487-1655322235159 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:43:55.168 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-488-1655322235166 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:43:55.183 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-485-1655322235159 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:43:55.267 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-489-1655322235267 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:43:55.283 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-490-1655322235283 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:43:55.325 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-491-1655322235324 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:43:55.325 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-492-1655322235324 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:43:55.326 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-493-1655322235324 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:43:55.326 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-494-1655322235324 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:43:55.328 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-495-1655322235326 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:43:55.328 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-496-1655322235326 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:43:55.332 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-497-1655322235327 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:43:55.368 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-499-1655322235365 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:43:55.369 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-500-1655322235368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:43:55.371 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-498-1655322235365 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:43:55.381 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-501-1655322235379 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:43:55.426 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-502-1655322235409 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:43:55.486 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-503-1655322235485 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:43:55.499 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-504-1655322235497 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:43:55.856 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-507-1655322235801 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.mtl Response 200 OK +2022-06-15/15:43:55.856 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-509-1655322235804 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.mtl Response 200 OK +2022-06-15/15:43:55.856 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-505-1655322235800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.mtl Response 200 OK +2022-06-15/15:43:55.856 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-508-1655322235803 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.mtl Response 200 OK +2022-06-15/15:43:55.856 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-506-1655322235800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.mtl Response 200 OK +2022-06-15/15:43:55.858 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-510-1655322235805 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.mtl Response 200 OK +2022-06-15/15:43:55.859 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-511-1655322235857 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.mtl Response 200 OK +2022-06-15/15:43:55.860 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-512-1655322235858 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.mtl Response 200 OK +2022-06-15/15:43:55.860 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-514-1655322235858 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.mtl Response 200 OK +2022-06-15/15:43:55.860 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-516-1655322235858 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.mtl Response 200 OK +2022-06-15/15:43:55.861 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-513-1655322235858 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.mtl Response 200 OK +2022-06-15/15:43:55.861 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-515-1655322235858 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.mtl Response 200 OK +2022-06-15/15:43:55.862 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-517-1655322235860 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.mtl Response 200 OK +2022-06-15/15:43:55.864 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-518-1655322235861 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.mtl Response 200 OK +2022-06-15/15:43:55.864 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-519-1655322235862 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.mtl Response 200 OK +2022-06-15/15:43:55.864 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-520-1655322235862 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.mtl Response 200 OK +2022-06-15/15:43:55.864 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-522-1655322235862 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.mtl Response 200 OK +2022-06-15/15:43:55.864 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-521-1655322235862 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.mtl Response 200 OK +2022-06-15/15:43:55.865 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-523-1655322235862 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.mtl Response 200 OK +2022-06-15/15:43:55.866 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-524-1655322235864 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.mtl Response 200 OK +2022-06-15/15:43:55.866 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-525-1655322235865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.mtl Response 200 OK +2022-06-15/15:43:55.866 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-526-1655322235866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.mtl Response 200 OK +2022-06-15/15:43:55.867 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-527-1655322235866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.mtl Response 200 OK +2022-06-15/15:43:55.921 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-528-1655322235920 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.diff.png Response 200 OK +2022-06-15/15:43:55.921 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-529-1655322235920 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.spec.png Response 200 OK +2022-06-15/15:43:55.947 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-530-1655322235945 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.diff.png Response 200 OK +2022-06-15/15:43:55.948 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-531-1655322235945 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.spec.png Response 200 OK +2022-06-15/15:43:55.976 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-532-1655322235974 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.diff.png Response 200 OK +2022-06-15/15:43:55.976 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-533-1655322235974 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.spec.png Response 200 OK +2022-06-15/15:43:55.990 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-534-1655322235989 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.diff.png Response 200 OK +2022-06-15/15:43:55.991 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-535-1655322235989 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.spec.png Response 200 OK +2022-06-15/15:43:56.006 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-536-1655322236005 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.diff.png Response 200 OK +2022-06-15/15:43:56.006 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-537-1655322236005 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.spec.png Response 200 OK +2022-06-15/15:43:56.020 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-539-1655322236018 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.spec.png Response 200 OK +2022-06-15/15:43:56.020 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-538-1655322236018 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.diff.png Response 200 OK +2022-06-15/15:43:56.034 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-542-1655322236032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.spec.png Response 200 OK +2022-06-15/15:43:56.034 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-541-1655322236032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.diff.png Response 200 OK +2022-06-15/15:43:56.045 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-540-1655322236019 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.obj Response 200 OK +2022-06-15/15:43:56.050 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-544-1655322236048 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.spec.png Response 200 OK +2022-06-15/15:43:56.050 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-543-1655322236048 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.diff.png Response 200 OK +2022-06-15/15:43:56.062 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-545-1655322236061 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.diff.png Response 200 OK +2022-06-15/15:43:56.062 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-546-1655322236061 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.spec.png Response 200 OK +2022-06-15/15:43:56.075 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-548-1655322236073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.spec.png Response 200 OK +2022-06-15/15:43:56.075 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-547-1655322236073 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.diff.png Response 200 OK +2022-06-15/15:43:56.087 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-549-1655322236086 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.diff.png Response 200 OK +2022-06-15/15:43:56.087 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-550-1655322236086 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.spec.png Response 200 OK +2022-06-15/15:43:56.103 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-552-1655322236101 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.spec.png Response 200 OK +2022-06-15/15:43:56.103 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-551-1655322236101 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.diff.png Response 200 OK +2022-06-15/15:43:56.117 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-554-1655322236116 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.diff.png Response 200 OK +2022-06-15/15:43:56.117 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-555-1655322236116 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.spec.png Response 200 OK +2022-06-15/15:43:56.130 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-556-1655322236128 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.spec.png Response 200 OK +2022-06-15/15:43:56.130 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-557-1655322236128 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.diff.png Response 200 OK +2022-06-15/15:43:56.145 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-558-1655322236144 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.diff.png Response 200 OK +2022-06-15/15:43:56.145 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-559-1655322236144 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.spec.png Response 200 OK +2022-06-15/15:43:56.161 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-560-1655322236159 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.diff.png Response 200 OK +2022-06-15/15:43:56.161 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-561-1655322236160 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.spec.png Response 200 OK +2022-06-15/15:43:56.175 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-563-1655322236174 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.spec.png Response 200 OK +2022-06-15/15:43:56.175 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-562-1655322236174 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.diff.png Response 200 OK +2022-06-15/15:43:56.189 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-565-1655322236187 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.spec.png Response 200 OK +2022-06-15/15:43:56.189 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-564-1655322236187 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.diff.png Response 200 OK +2022-06-15/15:43:56.204 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-566-1655322236203 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.diff.png Response 200 OK +2022-06-15/15:43:56.204 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-567-1655322236203 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.spec.png Response 200 OK +2022-06-15/15:43:56.219 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-568-1655322236217 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.spec.png Response 200 OK +2022-06-15/15:43:56.219 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-569-1655322236217 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.diff.png Response 200 OK +2022-06-15/15:43:56.233 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-571-1655322236232 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.spec.png Response 200 OK +2022-06-15/15:43:56.233 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-570-1655322236232 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.diff.png Response 200 OK +2022-06-15/15:43:56.253 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-573-1655322236251 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.diff.png Response 200 OK +2022-06-15/15:43:56.253 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-572-1655322236251 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.spec.png Response 200 OK +2022-06-15/15:43:56.266 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-576-1655322236265 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.spec.png Response 200 OK +2022-06-15/15:43:56.266 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-575-1655322236265 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.diff.png Response 200 OK +2022-06-15/15:43:56.354 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-574-1655322236258 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.obj Response 200 OK +2022-06-15/15:43:56.669 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-553-1655322236103 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.obj Response 200 OK +2022-06-15/15:43:56.689 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-580-1655322236274 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.obj Response 200 OK +2022-06-15/15:43:56.801 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-579-1655322236269 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.obj Response 200 OK +2022-06-15/15:43:56.890 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-577-1655322236268 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.obj Response 200 OK +2022-06-15/15:43:56.903 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-581-1655322236355 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.obj Response 200 OK +2022-06-15/15:43:56.916 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-584-1655322236802 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.obj Response 200 OK +2022-06-15/15:43:56.935 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-582-1655322236670 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.obj Response 200 OK +2022-06-15/15:43:57.089 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-578-1655322236269 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.obj Response 200 OK +2022-06-15/15:43:57.090 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-586-1655322236903 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.obj Response 200 OK +2022-06-15/15:43:57.099 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-585-1655322236891 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.obj Response 200 OK +2022-06-15/15:43:57.125 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-583-1655322236690 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.obj Response 200 OK +2022-06-15/15:43:57.262 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-588-1655322236936 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.obj Response 200 OK +2022-06-15/15:43:57.291 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-589-1655322237090 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.obj Response 200 OK +2022-06-15/15:43:57.472 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-587-1655322236917 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.obj Response 200 OK +2022-06-15/15:43:57.475 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-592-1655322237126 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.obj Response 200 OK +2022-06-15/15:43:57.487 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-590-1655322237091 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.obj Response 200 OK +2022-06-15/15:43:57.517 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-591-1655322237100 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.obj Response 200 OK +2022-06-15/15:43:57.543 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-593-1655322237262 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.obj Response 200 OK +2022-06-15/15:43:57.547 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-594-1655322237292 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.obj Response 200 OK +2022-06-15/15:43:57.566 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-596-1655322237476 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.obj Response 200 OK +2022-06-15/15:43:57.583 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-595-1655322237473 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.obj Response 200 OK +2022-06-15/15:44:07.039 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-597-1655322246986 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/mechyrdian-navy Response 404 Not Found +2022-06-15/15:44:07.090 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-598-1655322247089 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:07.097 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-599-1655322247094 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:07.140 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-600-1655322247096 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:07.140 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-603-1655322247139 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:07.140 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-602-1655322247139 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:07.162 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-604-1655322247161 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:07.164 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-601-1655322247139 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:07.195 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-605-1655322247194 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:07.218 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-606-1655322247215 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:07.267 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-607-1655322247266 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:07.267 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-608-1655322247266 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:07.268 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-609-1655322247266 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:07.269 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-610-1655322247268 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:07.270 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-611-1655322247269 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:07.271 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-612-1655322247270 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:07.273 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-613-1655322247270 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:07.307 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-614-1655322247305 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:07.307 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-616-1655322247306 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:07.307 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-615-1655322247306 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:07.322 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-617-1655322247320 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:07.368 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-618-1655322247353 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:07.428 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-619-1655322247427 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:07.439 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-620-1655322247438 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:08.459 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-621-1655322248457 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:44:08.503 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-622-1655322248501 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:08.509 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-623-1655322248506 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:08.509 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-624-1655322248509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:08.557 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-627-1655322248557 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:08.557 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-626-1655322248556 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:08.560 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-628-1655322248559 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:08.582 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-625-1655322248556 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:08.637 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-629-1655322248635 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:08.660 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-630-1655322248658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:08.716 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-632-1655322248715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:08.716 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-631-1655322248715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:08.717 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-633-1655322248715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:08.718 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-634-1655322248717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:08.718 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-636-1655322248717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:08.719 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-635-1655322248717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:08.720 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-637-1655322248718 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:08.754 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-638-1655322248754 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:08.755 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-639-1655322248754 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:08.755 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-640-1655322248754 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:08.768 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-641-1655322248768 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:08.818 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-642-1655322248802 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:08.882 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-643-1655322248881 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:08.895 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-644-1655322248894 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:09.778 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-645-1655322249777 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets Response 200 OK +2022-06-15/15:44:09.823 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-646-1655322249821 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:09.846 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-647-1655322249844 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:09.857 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-648-1655322249856 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:09.887 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-650-1655322249886 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:09.887 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-651-1655322249887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:09.890 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-652-1655322249889 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:09.915 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-649-1655322249886 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:09.952 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-653-1655322249950 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:09.963 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-654-1655322249961 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:10.008 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-655-1655322250006 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:10.008 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-656-1655322250006 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:10.008 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-657-1655322250008 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:10.009 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-658-1655322250008 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:10.009 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-659-1655322250008 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:10.009 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-660-1655322250008 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:10.011 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-661-1655322250009 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:10.041 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-662-1655322250040 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:10.041 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-663-1655322250040 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:10.041 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-664-1655322250040 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:10.055 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-665-1655322250055 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:10.102 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-666-1655322250086 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:10.163 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-667-1655322250161 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:10.178 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-668-1655322250177 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:10.512 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-669-1655322250509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:44:10.554 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-670-1655322250552 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:10.562 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-671-1655322250561 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:10.569 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-672-1655322250569 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:10.600 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-674-1655322250600 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:10.600 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-675-1655322250600 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:10.604 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-676-1655322250604 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:10.624 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-673-1655322250599 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:10.668 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-677-1655322250666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:10.680 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-678-1655322250679 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:10.727 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-682-1655322250726 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:10.727 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-680-1655322250725 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:10.727 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-681-1655322250726 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:10.727 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-679-1655322250725 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:10.728 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-684-1655322250727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:10.728 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-683-1655322250727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:10.730 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-685-1655322250727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:10.759 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-687-1655322250759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:10.760 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-686-1655322250759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:10.760 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-688-1655322250759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:10.775 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-689-1655322250774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:10.820 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-690-1655322250804 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:10.887 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-691-1655322250885 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:10.899 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-692-1655322250897 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:11.264 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-693-1655322251262 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military Response 200 OK +2022-06-15/15:44:11.305 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-694-1655322251302 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:11.316 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-695-1655322251315 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:11.322 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-696-1655322251321 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:11.353 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-699-1655322251352 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:11.353 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-698-1655322251352 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:11.355 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-700-1655322251354 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:11.376 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-697-1655322251352 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:11.403 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-701-1655322251403 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:11.421 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-702-1655322251419 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:11.463 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-703-1655322251462 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:11.463 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-704-1655322251462 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:11.464 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-705-1655322251463 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:11.464 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-706-1655322251463 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:11.464 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-707-1655322251463 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:11.467 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-708-1655322251466 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:11.468 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-709-1655322251466 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:11.495 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-710-1655322251493 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:11.495 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-712-1655322251493 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:11.495 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-711-1655322251493 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:11.509 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-713-1655322251508 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:11.553 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-714-1655322251537 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:11.618 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-715-1655322251617 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:11.629 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-716-1655322251629 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:12.075 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-717-1655322252072 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:44:12.114 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-718-1655322252111 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:12.127 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-719-1655322252127 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:12.134 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-720-1655322252132 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:12.162 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-722-1655322252161 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:12.162 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-723-1655322252161 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:12.169 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-724-1655322252168 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:12.183 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-721-1655322252161 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:12.226 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-725-1655322252225 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:12.237 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-726-1655322252235 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:12.274 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-729-1655322252273 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:12.274 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-728-1655322252273 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:12.274 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-727-1655322252273 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:12.274 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-730-1655322252274 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:12.276 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-731-1655322252275 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:12.276 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-732-1655322252275 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:12.277 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-733-1655322252275 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:12.304 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-734-1655322252303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:12.304 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-736-1655322252304 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:12.304 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-735-1655322252303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:12.318 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-737-1655322252317 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:12.370 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-738-1655322252350 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:12.444 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-739-1655322252442 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:12.462 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-740-1655322252460 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:13.412 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-741-1655322252751 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate Response 200 OK +2022-06-15/15:44:13.459 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-742-1655322253456 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:13.482 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-743-1655322253480 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:13.569 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-749-1655322253534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-new-republicans.png Response 200 OK +2022-06-15/15:44:13.571 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-750-1655322253570 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:13.572 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-747-1655322253532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-tylan-peoples.png Response 200 OK +2022-06-15/15:44:13.579 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-746-1655322253532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperials.png Response 200 OK +2022-06-15/15:44:13.587 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-748-1655322253533 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-workers-left.png Response 200 OK +2022-06-15/15:44:13.588 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-754-1655322253588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:13.611 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-751-1655322253572 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-union.png Response 200 OK +2022-06-15/15:44:13.612 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-756-1655322253611 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:13.615 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-755-1655322253588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperial-democrats.png Response 200 OK +2022-06-15/15:44:13.665 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-752-1655322253572 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-liberals.png Response 200 OK +2022-06-15/15:44:13.667 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-759-1655322253666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:13.700 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-753-1655322253580 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-royalists.png Response 200 OK +2022-06-15/15:44:13.702 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-744-1655322253532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:44:13.704 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-762-1655322253703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:13.705 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-763-1655322253704 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:13.709 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-764-1655322253708 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:13.710 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-765-1655322253709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:13.712 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-766-1655322253711 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:13.713 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-760-1655322253668 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:44:13.714 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-767-1655322253712 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:13.715 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-768-1655322253714 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:13.715 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-745-1655322253532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-whigs.png Response 200 OK +2022-06-15/15:44:13.717 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-769-1655322253715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:13.719 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-770-1655322253715 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:13.728 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-761-1655322253700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:13.732 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-758-1655322253615 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:44:13.734 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-757-1655322253613 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-republicans.png Response 200 OK +2022-06-15/15:44:13.895 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-771-1655322253893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:13.895 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-772-1655322253893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:13.895 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-773-1655322253894 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:13.919 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-774-1655322253917 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:13.963 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-775-1655322253948 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:14.027 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-776-1655322254027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:14.045 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-777-1655322254044 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:22.326 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-778-1655322261769 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate Response 200 OK +2022-06-15/15:44:22.349 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-779-1655322262347 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:44:22.369 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-780-1655322262368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:44:22.374 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-781-1655322262373 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:44:22.440 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-785-1655322262439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-tylan-peoples.png Response 200 OK +2022-06-15/15:44:22.440 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-783-1655322262436 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-whigs.png Response 200 OK +2022-06-15/15:44:22.441 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-787-1655322262439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-new-republicans.png Response 200 OK +2022-06-15/15:44:22.441 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-784-1655322262437 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperials.png Response 200 OK +2022-06-15/15:44:22.441 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-782-1655322262436 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:44:22.443 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-788-1655322262440 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-union.png Response 200 OK +2022-06-15/15:44:22.443 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-786-1655322262439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-workers-left.png Response 200 OK +2022-06-15/15:44:22.445 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-789-1655322262441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-liberals.png Response 200 OK +2022-06-15/15:44:22.445 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-791-1655322262441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperial-democrats.png Response 200 OK +2022-06-15/15:44:22.447 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-792-1655322262444 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:44:22.448 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-790-1655322262441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-royalists.png Response 200 OK +2022-06-15/15:44:22.448 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-794-1655322262447 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:44:22.448 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-793-1655322262444 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-republicans.png Response 200 OK +2022-06-15/15:44:22.464 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-797-1655322262464 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:44:22.464 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-796-1655322262463 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:44:22.472 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-798-1655322262471 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:44:22.506 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-795-1655322262463 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:44:22.537 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-799-1655322262536 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:44:22.648 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-800-1655322262641 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:44:22.719 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-801-1655322262718 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:44:22.721 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-802-1655322262719 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:44:22.721 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-803-1655322262719 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:44:22.722 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-805-1655322262720 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:44:22.722 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-804-1655322262720 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:44:22.723 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-806-1655322262721 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:44:22.724 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-807-1655322262722 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:44:22.763 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-808-1655322262762 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:44:22.763 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-809-1655322262762 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:44:22.764 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-810-1655322262763 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:44:22.783 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-811-1655322262782 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:44:22.834 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-812-1655322262819 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:44:22.898 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-813-1655322262897 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:44:22.913 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-814-1655322262912 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:44:41.715 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-815-1655322281713 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:44:42.512 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-816-1655322282374 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /favicon.ico Response 404 Not Found +2022-06-15/15:46:07.809 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:46:07.909 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:46:07.917 [main] I (ktor.application) - Application started in 0.109 seconds. +2022-06-15/15:46:07.917 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:46:07.924 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:46:08.116 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:46:08.116 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:46:08.118 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:46:08.119 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:46:08.119 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:46:08.119 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:46:08.120 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:46:08.120 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:46:08.120 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:46:08.120 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:46:08.148 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:46:08.148 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:46:08.148 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:46:08.150 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:46:08.150 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:46:08.150 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:46:08.150 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:46:09.495 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:46:09.543 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:46:09.544 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:46:09.549 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:46:09.549 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:46:09.554 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:46:09.671 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 19068 (auto-detected) +2022-06-15/15:46:09.674 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:46:09.674 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:46:10.728 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:46:10.728 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:46:11.792 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:46:11.801 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:46:11.802 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:46:11.819 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:46:11.820 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:46:11.828 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:46:11.829 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:46:11.829 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:46:22.060 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:46:22.060 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:46:22.062 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@753a71e0 +2022-06-15/15:46:22.148 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:46:22.148 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:46:22.148 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:46:22.148 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:46:23.399 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655322382191 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics/mechyrdian-senate Response 200 OK +2022-06-15/15:46:23.494 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655322383449 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:46:23.494 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655322383456 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:46:23.499 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655322383423 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:46:23.605 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-10-1655322383594 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-tylan-peoples.png Response 200 OK +2022-06-15/15:46:23.605 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-9-1655322383594 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-new-republicans.png Response 200 OK +2022-06-15/15:46:23.608 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-6-1655322383588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-whigs.png Response 200 OK +2022-06-15/15:46:23.613 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655322383588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperials.png Response 200 OK +2022-06-15/15:46:23.614 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-5-1655322383588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-freedom.png Response 200 OK +2022-06-15/15:46:23.618 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655322383594 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-workers-left.png Response 200 OK +2022-06-15/15:46:23.619 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-11-1655322383606 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-union.png Response 200 OK +2022-06-15/15:46:23.621 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-12-1655322383606 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-liberals.png Response 200 OK +2022-06-15/15:46:23.627 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-16-1655322383621 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-democratic-reform.png Response 200 OK +2022-06-15/15:46:23.627 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-17-1655322383623 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:46:23.634 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-15-1655322383617 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-republicans.png Response 200 OK +2022-06-15/15:46:23.634 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-14-1655322383615 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-imperial-democrats.png Response 200 OK +2022-06-15/15:46:23.637 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-18-1655322383627 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-all-peoples.png Response 200 OK +2022-06-15/15:46:23.639 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-13-1655322383611 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/party-royalists.png Response 200 OK +2022-06-15/15:46:23.640 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-20-1655322383636 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:46:23.660 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-21-1655322383653 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:46:23.717 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-19-1655322383628 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:46:23.890 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-22-1655322383882 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:46:23.919 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-23-1655322383913 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:46:23.992 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-25-1655322383989 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:46:23.992 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-24-1655322383988 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:46:23.996 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-27-1655322383992 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:46:23.995 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-26-1655322383990 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:46:23.998 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-28-1655322383993 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:46:24.000 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-29-1655322383993 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:46:24.004 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-30-1655322383994 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:46:24.035 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-32-1655322384032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:46:24.035 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-31-1655322384032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:46:24.035 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-33-1655322384032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:46:24.053 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-34-1655322384049 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:46:24.113 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-35-1655322384083 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:46:24.194 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-36-1655322384191 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:46:24.208 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-37-1655322384206 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:46:39.339 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-38-1655322399335 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/politics Response 200 OK +2022-06-15/15:46:39.389 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-39-1655322399386 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:46:39.400 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-41-1655322399396 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:46:39.400 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-40-1655322399393 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:46:39.448 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-44-1655322399443 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:46:39.448 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-43-1655322399443 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:46:39.451 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-45-1655322399448 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:46:39.485 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-42-1655322399443 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:46:39.514 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-46-1655322399512 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:46:39.543 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-47-1655322399539 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:46:39.592 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-49-1655322399589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:46:39.594 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-48-1655322399589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:46:39.596 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-50-1655322399590 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:46:39.598 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-51-1655322399592 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:46:39.598 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-53-1655322399592 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:46:39.599 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-52-1655322399592 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:46:39.603 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-54-1655322399595 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:46:39.638 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-56-1655322399634 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:46:39.638 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-55-1655322399634 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:46:39.639 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-57-1655322399635 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:46:39.655 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-58-1655322399653 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:46:39.720 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-59-1655322399692 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:46:39.803 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-60-1655322399801 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:46:39.820 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-61-1655322399817 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:46:40.626 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-62-1655322400622 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:46:40.669 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-63-1655322400665 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:46:40.689 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-64-1655322400686 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:46:40.697 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-65-1655322400695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:46:40.729 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-68-1655322400728 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:46:40.729 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-66-1655322400727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:46:40.731 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-69-1655322400729 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:46:40.760 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-67-1655322400727 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:46:40.807 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-70-1655322400806 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:46:40.820 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-71-1655322400818 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:46:40.868 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-76-1655322400866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:46:40.868 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-72-1655322400865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:46:40.868 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-73-1655322400865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:46:40.868 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-74-1655322400865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:46:40.869 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-75-1655322400865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:46:40.869 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-77-1655322400866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:46:40.873 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-78-1655322400869 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:46:40.906 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-79-1655322400904 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:46:40.906 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-81-1655322400904 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:46:40.906 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-80-1655322400904 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:46:40.921 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-82-1655322400919 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:46:40.978 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-83-1655322400956 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:46:41.044 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-84-1655322401042 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:46:41.058 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-85-1655322401057 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:46:41.467 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-86-1655322401462 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/mechyrdian-navy-ships Response 200 OK +2022-06-15/15:46:41.569 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-87-1655322401567 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:46:41.571 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-89-1655322401569 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:46:41.572 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-88-1655322401569 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:46:41.627 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-91-1655322401625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:46:41.627 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-92-1655322401625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:46:41.628 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-93-1655322401627 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:46:41.654 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-90-1655322401625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:46:41.761 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-94-1655322401759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:46:41.778 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-95-1655322401775 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:46:41.823 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-96-1655322401822 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:46:41.824 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-97-1655322401822 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:46:41.825 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-98-1655322401822 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:46:41.825 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-99-1655322401823 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:46:41.827 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-101-1655322401824 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:46:41.827 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-100-1655322401824 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:46:41.829 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-102-1655322401825 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:46:41.864 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-103-1655322401860 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:46:41.864 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-104-1655322401860 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:46:41.864 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-105-1655322401860 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:46:41.884 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-106-1655322401882 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:46:41.935 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-107-1655322401914 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:46:41.995 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-108-1655322401993 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:46:42.008 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-109-1655322402006 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:46:42.263 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-110-1655322402259 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.mtl Response 200 OK +2022-06-15/15:46:42.293 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-111-1655322402290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.mtl Response 200 OK +2022-06-15/15:46:42.293 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-112-1655322402290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.mtl Response 200 OK +2022-06-15/15:46:42.297 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-114-1655322402292 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.mtl Response 200 OK +2022-06-15/15:46:42.299 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-115-1655322402296 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.mtl Response 200 OK +2022-06-15/15:46:42.299 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-116-1655322402296 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.mtl Response 200 OK +2022-06-15/15:46:42.300 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-117-1655322402297 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.mtl Response 200 OK +2022-06-15/15:46:42.303 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-113-1655322402290 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.mtl Response 200 OK +2022-06-15/15:46:42.305 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-118-1655322402300 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.mtl Response 200 OK +2022-06-15/15:46:42.306 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-119-1655322402303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.mtl Response 200 OK +2022-06-15/15:46:42.308 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-120-1655322402303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.mtl Response 200 OK +2022-06-15/15:46:42.309 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-121-1655322402305 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.mtl Response 200 OK +2022-06-15/15:46:42.311 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-122-1655322402308 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.mtl Response 200 OK +2022-06-15/15:46:42.315 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-123-1655322402312 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.mtl Response 200 OK +2022-06-15/15:46:42.323 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-124-1655322402321 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.mtl Response 200 OK +2022-06-15/15:46:42.327 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-125-1655322402323 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.mtl Response 200 OK +2022-06-15/15:46:42.328 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-126-1655322402324 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.mtl Response 200 OK +2022-06-15/15:46:42.334 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-127-1655322402329 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.mtl Response 200 OK +2022-06-15/15:46:42.337 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-128-1655322402331 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.mtl Response 200 OK +2022-06-15/15:46:42.339 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-129-1655322402332 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.mtl Response 200 OK +2022-06-15/15:46:42.355 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-132-1655322402347 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.mtl Response 200 OK +2022-06-15/15:46:42.355 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-130-1655322402347 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.mtl Response 200 OK +2022-06-15/15:46:42.356 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-131-1655322402347 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.mtl Response 200 OK +2022-06-15/15:46:42.460 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-134-1655322402456 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.diff.png Response 200 OK +2022-06-15/15:46:42.460 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-133-1655322402456 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.spec.png Response 200 OK +2022-06-15/15:46:42.476 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-136-1655322402472 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.diff.png Response 200 OK +2022-06-15/15:46:42.476 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-135-1655322402472 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.spec.png Response 200 OK +2022-06-15/15:46:42.481 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-137-1655322402478 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.diff.png Response 200 OK +2022-06-15/15:46:42.481 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-138-1655322402479 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.spec.png Response 200 OK +2022-06-15/15:46:42.500 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-140-1655322402498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.spec.png Response 200 OK +2022-06-15/15:46:42.500 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-139-1655322402498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.diff.png Response 200 OK +2022-06-15/15:46:42.516 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-141-1655322402515 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.spec.png Response 200 OK +2022-06-15/15:46:42.516 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-142-1655322402515 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.diff.png Response 200 OK +2022-06-15/15:46:42.534 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-143-1655322402532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.diff.png Response 200 OK +2022-06-15/15:46:42.534 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-144-1655322402532 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.spec.png Response 200 OK +2022-06-15/15:46:42.552 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-146-1655322402551 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.spec.png Response 200 OK +2022-06-15/15:46:42.552 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-145-1655322402551 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.diff.png Response 200 OK +2022-06-15/15:46:42.569 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-147-1655322402567 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.diff.png Response 200 OK +2022-06-15/15:46:42.569 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-148-1655322402567 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.spec.png Response 200 OK +2022-06-15/15:46:42.591 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-149-1655322402589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.diff.png Response 200 OK +2022-06-15/15:46:42.591 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-150-1655322402589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.spec.png Response 200 OK +2022-06-15/15:46:42.607 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-151-1655322402605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.spec.png Response 200 OK +2022-06-15/15:46:42.607 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-152-1655322402605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.diff.png Response 200 OK +2022-06-15/15:46:42.627 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-154-1655322402625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.diff.png Response 200 OK +2022-06-15/15:46:42.627 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-153-1655322402625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.spec.png Response 200 OK +2022-06-15/15:46:42.641 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-155-1655322402640 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.spec.png Response 200 OK +2022-06-15/15:46:42.641 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-156-1655322402640 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.diff.png Response 200 OK +2022-06-15/15:46:42.656 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-157-1655322402655 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.diff.png Response 200 OK +2022-06-15/15:46:42.656 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-158-1655322402655 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.spec.png Response 200 OK +2022-06-15/15:46:42.671 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-159-1655322402670 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.diff.png Response 200 OK +2022-06-15/15:46:42.671 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-160-1655322402670 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.spec.png Response 200 OK +2022-06-15/15:46:42.686 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-162-1655322402684 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.spec.png Response 200 OK +2022-06-15/15:46:42.686 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-161-1655322402684 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.diff.png Response 200 OK +2022-06-15/15:46:42.735 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-167-1655322402731 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.spec.png Response 200 OK +2022-06-15/15:46:42.735 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-163-1655322402730 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.diff.png Response 200 OK +2022-06-15/15:46:42.736 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-166-1655322402730 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.diff.png Response 200 OK +2022-06-15/15:46:42.736 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-165-1655322402730 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.spec.png Response 200 OK +2022-06-15/15:46:42.748 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-169-1655322402746 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.spec.png Response 200 OK +2022-06-15/15:46:42.748 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-168-1655322402745 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.diff.png Response 200 OK +2022-06-15/15:46:42.752 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-164-1655322402730 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.obj Response 200 OK +2022-06-15/15:46:42.767 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-170-1655322402765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.diff.png Response 200 OK +2022-06-15/15:46:42.767 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-171-1655322402765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.spec.png Response 200 OK +2022-06-15/15:46:42.783 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-173-1655322402780 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.spec.png Response 200 OK +2022-06-15/15:46:42.783 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-172-1655322402780 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.diff.png Response 200 OK +2022-06-15/15:46:42.789 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-174-1655322402782 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.obj Response 200 OK +2022-06-15/15:46:42.802 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-175-1655322402800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.diff.png Response 200 OK +2022-06-15/15:46:42.802 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-176-1655322402800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.spec.png Response 200 OK +2022-06-15/15:46:42.822 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-178-1655322402820 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.spec.png Response 200 OK +2022-06-15/15:46:42.822 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-177-1655322402820 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.diff.png Response 200 OK +2022-06-15/15:46:42.837 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-179-1655322402836 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.diff.png Response 200 OK +2022-06-15/15:46:42.838 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-180-1655322402836 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.spec.png Response 200 OK +2022-06-15/15:46:42.856 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-181-1655322402840 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.obj Response 200 OK +2022-06-15/15:46:42.953 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-186-1655322402924 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.obj Response 200 OK +2022-06-15/15:46:42.963 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-184-1655322402923 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.obj Response 200 OK +2022-06-15/15:46:42.972 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-183-1655322402923 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.obj Response 200 OK +2022-06-15/15:46:42.976 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-182-1655322402923 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.obj Response 200 OK +2022-06-15/15:46:42.985 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-185-1655322402923 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.obj Response 200 OK +2022-06-15/15:46:43.002 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-187-1655322402924 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.obj Response 200 OK +2022-06-15/15:46:43.019 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-189-1655322402964 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.obj Response 200 OK +2022-06-15/15:46:43.029 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-192-1655322402987 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.obj Response 200 OK +2022-06-15/15:46:43.031 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-190-1655322402973 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.obj Response 200 OK +2022-06-15/15:46:43.031 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-188-1655322402954 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.obj Response 200 OK +2022-06-15/15:46:43.034 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-191-1655322402978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.obj Response 200 OK +2022-06-15/15:46:43.063 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-193-1655322403004 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.obj Response 200 OK +2022-06-15/15:46:43.071 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-195-1655322403030 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.obj Response 200 OK +2022-06-15/15:46:43.075 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-197-1655322403034 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.obj Response 200 OK +2022-06-15/15:46:43.077 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-194-1655322403020 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.obj Response 200 OK +2022-06-15/15:46:43.106 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-196-1655322403033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.obj Response 200 OK +2022-06-15/15:46:43.107 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-198-1655322403035 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.obj Response 200 OK +2022-06-15/15:46:43.119 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-201-1655322403076 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.obj Response 200 OK +2022-06-15/15:46:43.121 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-199-1655322403064 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.obj Response 200 OK +2022-06-15/15:46:43.122 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-200-1655322403072 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.obj Response 200 OK +2022-06-15/15:47:54.336 [eventLoopGroupProxy-4-2] D (ktor.application) - 200 OK: GET - /lore/military/fleets/mechyrdian-navy-ships. Exception class io.ktor.util.cio.ChannelWriteException: Cannot write to a channel] +io.ktor.util.cio.ChannelWriteException: Cannot write to a channel + at io.ktor.server.netty.cio.NettyResponsePipeline.processCallFailed(NettyResponsePipeline.kt:146) + at io.ktor.server.netty.cio.NettyResponsePipeline.processJobs(NettyResponsePipeline.kt:485) + at io.ktor.server.netty.cio.NettyResponsePipeline.access$processJobs(NettyResponsePipeline.kt:26) + at io.ktor.server.netty.cio.NettyResponsePipeline$processJobs$1.invokeSuspend(NettyResponsePipeline.kt) + at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) + at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) + at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) + at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) + at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) + at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) + at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) + at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda-1$lambda-0(NettyApplicationEngine.kt:251) + at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) + at java.lang.Thread.run(Thread.java:748) +Caused by: io.netty.channel.StacklessClosedChannelException: null + at io.netty.channel.AbstractChannel$AbstractUnsafe.write(Object, ChannelPromise)(Unknown Source) +2022-06-15/15:47:54.561 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-203-1655322474559 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:47:54.591 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-204-1655322474589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:47:54.660 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-209-1655322474658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:47:54.660 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-207-1655322474658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:47:54.660 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-205-1655322474658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:47:54.660 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-208-1655322474658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:47:54.662 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-206-1655322474658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:47:54.666 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-210-1655322474662 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:47:54.669 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-211-1655322474664 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:47:54.711 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-212-1655322474709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:47:54.711 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-213-1655322474709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:47:54.712 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-214-1655322474709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:47:54.779 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-215-1655322474777 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:47:54.910 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-216-1655322474882 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:47:55.007 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-217-1655322475005 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:47:55.020 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-218-1655322475018 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:47:55.180 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-219-1655322475179 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.mtl Response 200 OK +2022-06-15/15:47:55.202 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-220-1655322475200 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.mtl Response 200 OK +2022-06-15/15:47:55.347 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-221-1655322475336 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/mechyrdian-navy-ships Response 200 OK +2022-06-15/15:47:55.409 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-222-1655322475407 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:47:55.420 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-223-1655322475416 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:47:55.421 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-224-1655322475420 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:47:55.493 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-226-1655322475490 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:47:55.494 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-227-1655322475491 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:47:55.502 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-228-1655322475500 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:47:55.538 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-225-1655322475490 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:47:55.667 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-229-1655322475666 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:47:55.712 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-230-1655322475709 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:47:55.761 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-231-1655322475759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:47:55.761 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-233-1655322475759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:47:55.761 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-232-1655322475759 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:47:55.762 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-234-1655322475760 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:47:55.763 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-235-1655322475761 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:47:55.763 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-236-1655322475761 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:47:55.765 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-237-1655322475762 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:47:55.799 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-238-1655322475797 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:47:55.799 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-240-1655322475798 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:47:55.799 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-239-1655322475797 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:47:55.825 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-241-1655322475823 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:47:55.893 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-242-1655322475870 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:47:55.958 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-243-1655322475956 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:47:55.971 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-244-1655322475969 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:47:56.134 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-245-1655322476133 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.mtl Response 200 OK +2022-06-15/15:47:56.217 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-246-1655322476215 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.mtl Response 200 OK +2022-06-15/15:47:56.295 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-248-1655322476293 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.mtl Response 200 OK +2022-06-15/15:47:56.295 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-247-1655322476293 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.mtl Response 200 OK +2022-06-15/15:47:56.296 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-249-1655322476294 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.mtl Response 200 OK +2022-06-15/15:47:56.297 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-250-1655322476295 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.mtl Response 200 OK +2022-06-15/15:47:56.300 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-251-1655322476297 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.mtl Response 200 OK +2022-06-15/15:47:56.302 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-253-1655322476300 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.mtl Response 200 OK +2022-06-15/15:47:56.302 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-252-1655322476299 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.mtl Response 200 OK +2022-06-15/15:47:56.306 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-255-1655322476304 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.mtl Response 200 OK +2022-06-15/15:47:56.306 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-254-1655322476303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.mtl Response 200 OK +2022-06-15/15:47:56.309 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-256-1655322476307 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.mtl Response 200 OK +2022-06-15/15:47:56.312 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-257-1655322476310 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.mtl Response 200 OK +2022-06-15/15:47:56.316 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-258-1655322476313 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.mtl Response 200 OK +2022-06-15/15:47:56.323 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-260-1655322476319 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.mtl Response 200 OK +2022-06-15/15:47:56.324 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-259-1655322476318 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.mtl Response 200 OK +2022-06-15/15:47:56.325 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-261-1655322476322 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.mtl Response 200 OK +2022-06-15/15:47:56.333 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-262-1655322476331 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.mtl Response 200 OK +2022-06-15/15:47:56.333 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-263-1655322476331 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.mtl Response 200 OK +2022-06-15/15:47:56.336 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-264-1655322476335 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.mtl Response 200 OK +2022-06-15/15:47:56.336 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-265-1655322476335 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.mtl Response 200 OK +2022-06-15/15:47:56.340 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-266-1655322476337 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.mtl Response 200 OK +2022-06-15/15:47:56.350 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-267-1655322476348 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.mtl Response 200 OK +2022-06-15/15:47:56.418 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-269-1655322476415 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.diff.png Response 200 OK +2022-06-15/15:47:56.418 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-268-1655322476415 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.spec.png Response 200 OK +2022-06-15/15:47:56.430 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-270-1655322476428 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.diff.png Response 200 OK +2022-06-15/15:47:56.431 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-271-1655322476429 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.spec.png Response 200 OK +2022-06-15/15:47:56.433 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-273-1655322476432 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.spec.png Response 200 OK +2022-06-15/15:47:56.433 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-272-1655322476432 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.diff.png Response 200 OK +2022-06-15/15:47:56.444 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-274-1655322476441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.spec.png Response 200 OK +2022-06-15/15:47:56.444 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-275-1655322476441 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.diff.png Response 200 OK +2022-06-15/15:47:56.452 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-276-1655322476450 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.diff.png Response 200 OK +2022-06-15/15:47:56.452 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-277-1655322476450 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.spec.png Response 200 OK +2022-06-15/15:47:56.466 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-279-1655322476465 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.spec.png Response 200 OK +2022-06-15/15:47:56.466 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-278-1655322476465 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.diff.png Response 200 OK +2022-06-15/15:47:56.482 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-281-1655322476480 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.diff.png Response 200 OK +2022-06-15/15:47:56.482 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-280-1655322476480 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.spec.png Response 200 OK +2022-06-15/15:47:56.497 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-282-1655322476496 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.diff.png Response 200 OK +2022-06-15/15:47:56.500 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-283-1655322476497 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.spec.png Response 200 OK +2022-06-15/15:47:56.516 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-284-1655322476515 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.spec.png Response 200 OK +2022-06-15/15:47:56.516 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-285-1655322476515 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.diff.png Response 200 OK +2022-06-15/15:47:56.536 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-286-1655322476534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.diff.png Response 200 OK +2022-06-15/15:47:56.536 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-288-1655322476534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.spec.png Response 200 OK +2022-06-15/15:47:56.550 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-287-1655322476534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-micro-class.obj Response 200 OK +2022-06-15/15:47:56.562 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-289-1655322476560 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.diff.png Response 200 OK +2022-06-15/15:47:56.562 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-290-1655322476560 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.spec.png Response 200 OK +2022-06-15/15:47:56.581 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-291-1655322476579 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.spec.png Response 200 OK +2022-06-15/15:47:56.582 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-292-1655322476581 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.diff.png Response 200 OK +2022-06-15/15:47:56.600 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-293-1655322476598 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.diff.png Response 200 OK +2022-06-15/15:47:56.601 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-294-1655322476600 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.spec.png Response 200 OK +2022-06-15/15:47:56.623 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-296-1655322476621 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.spec.png Response 200 OK +2022-06-15/15:47:56.623 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-295-1655322476621 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.diff.png Response 200 OK +2022-06-15/15:47:56.643 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-298-1655322476641 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.diff.png Response 200 OK +2022-06-15/15:47:56.643 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-297-1655322476641 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.spec.png Response 200 OK +2022-06-15/15:47:56.651 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-299-1655322476643 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-nano-class.obj Response 200 OK +2022-06-15/15:47:56.663 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-301-1655322476662 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.spec.png Response 200 OK +2022-06-15/15:47:56.663 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-300-1655322476661 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.diff.png Response 200 OK +2022-06-15/15:47:56.680 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-303-1655322476678 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.spec.png Response 200 OK +2022-06-15/15:47:56.680 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-302-1655322476678 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.diff.png Response 200 OK +2022-06-15/15:47:56.687 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-304-1655322476680 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-1-pico-class.obj Response 200 OK +2022-06-15/15:47:56.705 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-306-1655322476703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.spec.png Response 200 OK +2022-06-15/15:47:56.705 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-305-1655322476703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.diff.png Response 200 OK +2022-06-15/15:47:56.721 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-308-1655322476719 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.spec.png Response 200 OK +2022-06-15/15:47:56.721 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-307-1655322476719 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.diff.png Response 200 OK +2022-06-15/15:47:56.739 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-310-1655322476737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.spec.png Response 200 OK +2022-06-15/15:47:56.739 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-309-1655322476737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.diff.png Response 200 OK +2022-06-15/15:47:56.761 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-311-1655322476741 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-gladius-class.obj Response 200 OK +2022-06-15/15:47:56.765 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-313-1655322476764 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.spec.png Response 200 OK +2022-06-15/15:47:56.766 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-312-1655322476764 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.diff.png Response 200 OK +2022-06-15/15:47:56.781 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-315-1655322476779 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.spec.png Response 200 OK +2022-06-15/15:47:56.781 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-314-1655322476779 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.diff.png Response 200 OK +2022-06-15/15:47:56.795 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-317-1655322476793 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.spec.png Response 200 OK +2022-06-15/15:47:56.795 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-316-1655322476793 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.diff.png Response 200 OK +2022-06-15/15:47:56.817 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-318-1655322476797 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-sica-class.obj Response 200 OK +2022-06-15/15:47:56.822 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-319-1655322476800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-2-pilum-class.obj Response 200 OK +2022-06-15/15:47:56.837 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-321-1655322476802 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kozachnia-class.obj Response 200 OK +2022-06-15/15:47:56.837 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-320-1655322476801 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-kaiserswelt-class.obj Response 200 OK +2022-06-15/15:47:56.866 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-322-1655322476829 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-karolina-class.obj Response 200 OK +2022-06-15/15:47:56.892 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-323-1655322476857 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mont-imperial-class.obj Response 200 OK +2022-06-15/15:47:56.895 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-324-1655322476865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-imperium-class.obj Response 200 OK +2022-06-15/15:47:56.899 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-325-1655322476870 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-honos-class.obj Response 200 OK +2022-06-15/15:47:56.960 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-326-1655322476916 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pax-class.obj Response 200 OK +2022-06-15/15:47:56.989 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-328-1655322476930 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-pietas-class.obj Response 200 OK +2022-06-15/15:47:57.012 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-329-1655322476939 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-mechyrdia-class.obj Response 200 OK +2022-06-15/15:47:57.018 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-327-1655322476925 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-earth-class.obj Response 200 OK +2022-06-15/15:47:57.036 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-333-1655322476990 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-mundus-caesaris-divi-class.obj Response 200 OK +2022-06-15/15:47:57.036 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-330-1655322476946 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-languavarth-class.obj Response 200 OK +2022-06-15/15:47:57.048 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-331-1655322476951 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-nova-roma-class.obj Response 200 OK +2022-06-15/15:47:57.048 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-332-1655322476972 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-5-tyla-class.obj Response 200 OK +2022-06-15/15:47:57.051 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-334-1655322477013 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-3-vensca-class.obj Response 200 OK +2022-06-15/15:47:57.066 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-335-1655322477038 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-auctoritas-class.obj Response 200 OK +2022-06-15/15:47:57.072 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-336-1655322477052 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/mechyrdia-4-civitas-class.obj Response 200 OK +2022-06-15/15:47:58.426 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-337-1655322478424 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets Response 200 OK +2022-06-15/15:47:58.471 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-338-1655322478469 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:47:58.480 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-340-1655322478478 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:47:58.481 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-339-1655322478477 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:47:58.532 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-343-1655322478531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:47:58.532 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-342-1655322478531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:47:58.534 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-344-1655322478533 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:47:58.560 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-341-1655322478531 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:47:58.607 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-345-1655322478605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:47:58.617 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-346-1655322478616 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:47:58.655 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-348-1655322478654 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:47:58.655 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-347-1655322478654 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:47:58.656 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-349-1655322478654 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:47:58.658 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-351-1655322478655 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:47:58.658 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-350-1655322478655 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:47:58.660 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-352-1655322478658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:47:58.662 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-353-1655322478658 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:47:58.688 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-354-1655322478686 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:47:58.690 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-355-1655322478688 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:47:58.690 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-356-1655322478688 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:47:58.701 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-357-1655322478700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:47:58.747 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-358-1655322478730 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:47:58.818 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-359-1655322478816 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:47:58.830 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-360-1655322478830 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:47:59.647 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-361-1655322479645 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/ndrc-ships Response 200 OK +2022-06-15/15:47:59.687 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-362-1655322479684 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:47:59.707 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-363-1655322479705 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:47:59.715 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-364-1655322479714 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:47:59.743 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-366-1655322479742 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:47:59.743 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-367-1655322479742 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:47:59.745 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-368-1655322479745 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:47:59.767 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-365-1655322479742 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:47:59.810 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-369-1655322479810 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:47:59.825 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-370-1655322479824 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:47:59.866 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-372-1655322479866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:47:59.867 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-373-1655322479866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:47:59.868 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-371-1655322479865 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:47:59.868 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-374-1655322479866 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:47:59.869 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-375-1655322479867 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:47:59.869 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-376-1655322479867 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:47:59.872 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-377-1655322479868 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:47:59.898 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-378-1655322479896 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:47:59.898 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-379-1655322479896 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:47:59.898 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-380-1655322479896 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:47:59.911 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-381-1655322479911 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:47:59.960 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-382-1655322479940 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:00.022 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-383-1655322480020 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:00.032 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-384-1655322480032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:00.098 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-386-1655322480097 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-novaatje-class.mtl Response 200 OK +2022-06-15/15:48:00.098 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-385-1655322480097 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-zwaard-class.mtl Response 200 OK +2022-06-15/15:48:00.099 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-387-1655322480097 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-jager-class.mtl Response 200 OK +2022-06-15/15:48:00.099 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-389-1655322480098 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-voorhoede-class.mtl Response 200 OK +2022-06-15/15:48:00.099 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-388-1655322480098 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-slagschip-class.mtl Response 200 OK +2022-06-15/15:48:00.099 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-390-1655322480098 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-5-krijgschuit-class.mtl Response 200 OK +2022-06-15/15:48:00.213 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-391-1655322480212 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-zwaard-class.diff.png Response 200 OK +2022-06-15/15:48:00.214 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-392-1655322480213 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-zwaard-class.spec.png Response 200 OK +2022-06-15/15:48:00.229 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-393-1655322480228 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-novaatje-class.diff.png Response 200 OK +2022-06-15/15:48:00.241 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-394-1655322480239 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-jager-class.diff.png Response 200 OK +2022-06-15/15:48:00.241 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-395-1655322480239 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-jager-class.spec.png Response 200 OK +2022-06-15/15:48:00.256 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-397-1655322480254 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-slagschip-class.diff.png Response 200 OK +2022-06-15/15:48:00.256 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-398-1655322480254 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-slagschip-class.spec.png Response 200 OK +2022-06-15/15:48:00.273 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-399-1655322480271 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-voorhoede-class.diff.png Response 200 OK +2022-06-15/15:48:00.273 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-400-1655322480272 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-voorhoede-class.spec.png Response 200 OK +2022-06-15/15:48:00.283 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-396-1655322480241 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-zwaard-class.obj Response 200 OK +2022-06-15/15:48:00.296 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-402-1655322480294 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-5-krijgschuit-class.spec.png Response 200 OK +2022-06-15/15:48:00.296 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-401-1655322480294 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-5-krijgschuit-class.diff.png Response 200 OK +2022-06-15/15:48:00.361 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-403-1655322480296 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-novaatje-class.obj Response 200 OK +2022-06-15/15:48:00.363 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-408-1655322480362 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-novaatje-class.spec.png Response 200 OK +2022-06-15/15:48:00.413 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-406-1655322480305 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-voorhoede-class.obj Response 200 OK +2022-06-15/15:48:00.416 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-404-1655322480298 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-2-jager-class.obj Response 200 OK +2022-06-15/15:48:00.429 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-405-1655322480303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-3-slagschip-class.obj Response 200 OK +2022-06-15/15:48:00.461 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-407-1655322480306 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/ndrc-5-krijgschuit-class.obj Response 200 OK +2022-06-15/15:48:03.889 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-409-1655322483887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets Response 200 OK +2022-06-15/15:48:03.935 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-410-1655322483932 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:03.946 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-411-1655322483946 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:03.952 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-412-1655322483950 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:03.979 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-414-1655322483978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:03.979 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-415-1655322483978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:03.983 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-416-1655322483981 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:04.002 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-413-1655322483978 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:04.046 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-417-1655322484045 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:04.061 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-418-1655322484059 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:04.100 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-419-1655322484099 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:04.100 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-420-1655322484099 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:04.100 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-421-1655322484099 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:04.101 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-422-1655322484100 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:04.102 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-423-1655322484101 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:04.102 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-424-1655322484101 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:04.108 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-425-1655322484105 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:04.138 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-426-1655322484137 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:04.139 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-428-1655322484137 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:04.139 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-427-1655322484137 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:04.153 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-429-1655322484153 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:04.199 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-430-1655322484182 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:04.262 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-431-1655322484262 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:04.275 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-432-1655322484274 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:04.785 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-433-1655322484782 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/vestigium-ships Response 200 OK +2022-06-15/15:48:04.833 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-434-1655322484830 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:04.845 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-435-1655322484844 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:04.856 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-436-1655322484855 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:04.889 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-438-1655322484888 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:04.889 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-439-1655322484888 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:04.891 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-440-1655322484889 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:04.914 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-437-1655322484888 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:04.975 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-441-1655322484974 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:04.986 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-442-1655322484985 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:05.028 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-444-1655322485027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:05.028 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-443-1655322485027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:05.028 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-445-1655322485028 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:05.030 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-446-1655322485028 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:05.030 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-447-1655322485029 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:05.031 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-448-1655322485030 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:05.036 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-449-1655322485032 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:05.068 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-450-1655322485065 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:05.068 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-451-1655322485066 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:05.069 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-452-1655322485067 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:05.081 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-453-1655322485080 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:05.127 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-454-1655322485110 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:05.189 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-455-1655322485187 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:05.200 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-456-1655322485199 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:05.330 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-457-1655322485329 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-coleman-class.mtl Response 200 OK +2022-06-15/15:48:05.337 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-458-1655322485336 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-jefferson-class.mtl Response 200 OK +2022-06-15/15:48:05.337 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-459-1655322485336 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-quenney-class.mtl Response 200 OK +2022-06-15/15:48:05.337 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-460-1655322485336 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-roosevelt-class.mtl Response 200 OK +2022-06-15/15:48:05.338 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-461-1655322485337 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-washington-class.mtl Response 200 OK +2022-06-15/15:48:05.339 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-462-1655322485338 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-arlington-class.mtl Response 200 OK +2022-06-15/15:48:05.340 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-464-1655322485338 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-lexington-class.mtl Response 200 OK +2022-06-15/15:48:05.340 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-463-1655322485338 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-concord-class.mtl Response 200 OK +2022-06-15/15:48:05.340 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-465-1655322485339 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-raven-rock-class.mtl Response 200 OK +2022-06-15/15:48:05.341 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-467-1655322485339 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-maryland-class.mtl Response 200 OK +2022-06-15/15:48:05.341 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-466-1655322485339 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-iowa-class.mtl Response 200 OK +2022-06-15/15:48:05.342 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-468-1655322485340 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-new-york-class.mtl Response 200 OK +2022-06-15/15:48:05.345 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-469-1655322485343 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-ohio-class.mtl Response 200 OK +2022-06-15/15:48:05.519 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-470-1655322485517 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-coleman-class.diff.png Response 200 OK +2022-06-15/15:48:05.519 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-471-1655322485518 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-coleman-class.spec.png Response 200 OK +2022-06-15/15:48:05.535 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-472-1655322485534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-jefferson-class.diff.png Response 200 OK +2022-06-15/15:48:05.535 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-473-1655322485534 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-jefferson-class.spec.png Response 200 OK +2022-06-15/15:48:05.547 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-474-1655322485546 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-quenney-class.spec.png Response 200 OK +2022-06-15/15:48:05.547 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-475-1655322485546 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-quenney-class.diff.png Response 200 OK +2022-06-15/15:48:05.562 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-477-1655322485561 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-roosevelt-class.spec.png Response 200 OK +2022-06-15/15:48:05.562 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-476-1655322485561 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-roosevelt-class.diff.png Response 200 OK +2022-06-15/15:48:05.578 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-478-1655322485576 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-washington-class.spec.png Response 200 OK +2022-06-15/15:48:05.578 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-479-1655322485576 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-washington-class.diff.png Response 200 OK +2022-06-15/15:48:05.593 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-481-1655322485592 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-arlington-class.spec.png Response 200 OK +2022-06-15/15:48:05.593 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-480-1655322485592 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-arlington-class.diff.png Response 200 OK +2022-06-15/15:48:05.608 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-483-1655322485607 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-concord-class.spec.png Response 200 OK +2022-06-15/15:48:05.608 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-482-1655322485607 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-concord-class.diff.png Response 200 OK +2022-06-15/15:48:05.623 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-484-1655322485621 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-lexington-class.diff.png Response 200 OK +2022-06-15/15:48:05.623 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-485-1655322485621 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-lexington-class.spec.png Response 200 OK +2022-06-15/15:48:05.639 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-487-1655322485637 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-raven-rock-class.diff.png Response 200 OK +2022-06-15/15:48:05.639 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-486-1655322485636 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-raven-rock-class.spec.png Response 200 OK +2022-06-15/15:48:05.655 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-488-1655322485653 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-iowa-class.diff.png Response 200 OK +2022-06-15/15:48:05.655 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-489-1655322485653 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-iowa-class.spec.png Response 200 OK +2022-06-15/15:48:05.669 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-491-1655322485668 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-maryland-class.spec.png Response 200 OK +2022-06-15/15:48:05.669 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-490-1655322485668 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-maryland-class.diff.png Response 200 OK +2022-06-15/15:48:05.682 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-492-1655322485681 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-new-york-class.diff.png Response 200 OK +2022-06-15/15:48:05.682 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-493-1655322485681 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-new-york-class.spec.png Response 200 OK +2022-06-15/15:48:05.696 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-494-1655322485695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-ohio-class.diff.png Response 200 OK +2022-06-15/15:48:05.696 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-495-1655322485695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-ohio-class.spec.png Response 200 OK +2022-06-15/15:48:05.808 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-496-1655322485696 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-coleman-class.obj Response 200 OK +2022-06-15/15:48:05.825 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-498-1655322485698 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-quenney-class.obj Response 200 OK +2022-06-15/15:48:05.837 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-500-1655322485705 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-washington-class.obj Response 200 OK +2022-06-15/15:48:05.883 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-497-1655322485697 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-jefferson-class.obj Response 200 OK +2022-06-15/15:48:05.928 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-499-1655322485702 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-1-roosevelt-class.obj Response 200 OK +2022-06-15/15:48:05.946 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-502-1655322485808 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-concord-class.obj Response 200 OK +2022-06-15/15:48:05.953 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-504-1655322485838 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-raven-rock-class.obj Response 200 OK +2022-06-15/15:48:05.958 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-501-1655322485707 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-arlington-class.obj Response 200 OK +2022-06-15/15:48:05.973 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-503-1655322485825 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-3-lexington-class.obj Response 200 OK +2022-06-15/15:48:05.982 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-506-1655322485928 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-maryland-class.obj Response 200 OK +2022-06-15/15:48:05.982 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-507-1655322485948 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-new-york-class.obj Response 200 OK +2022-06-15/15:48:05.983 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-505-1655322485884 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-iowa-class.obj Response 200 OK +2022-06-15/15:48:05.984 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-508-1655322485954 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/usa-5-ohio-class.obj Response 200 OK +2022-06-15/15:48:17.023 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-509-1655322497019 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/vestigium Response 404 Not Found +2022-06-15/15:48:17.095 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-510-1655322497092 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:17.097 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-511-1655322497095 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:17.104 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-512-1655322497102 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:17.141 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-515-1655322497140 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:17.141 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-514-1655322497139 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:17.146 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-516-1655322497145 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:17.163 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-513-1655322497139 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:17.204 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-517-1655322497204 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:17.220 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-518-1655322497219 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:17.258 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-520-1655322497257 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:17.258 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-519-1655322497257 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:17.259 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-521-1655322497257 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:17.260 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-522-1655322497258 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:17.260 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-523-1655322497258 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:17.262 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-525-1655322497260 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:17.263 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-524-1655322497260 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:17.289 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-527-1655322497287 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:17.289 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-526-1655322497287 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:17.289 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-528-1655322497288 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:17.303 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-529-1655322497301 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:17.348 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-530-1655322497332 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:17.409 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-531-1655322497408 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:17.422 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-532-1655322497421 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:18.521 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-533-1655322498518 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:48:18.564 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-534-1655322498561 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:18.587 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-535-1655322498585 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:18.595 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-536-1655322498594 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:18.629 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-539-1655322498625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:18.629 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-538-1655322498625 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:18.630 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-540-1655322498629 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:18.653 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-537-1655322498624 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:18.697 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-541-1655322498695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:18.718 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-542-1655322498717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:18.762 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-544-1655322498761 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:18.762 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-543-1655322498761 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:18.762 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-545-1655322498761 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:18.764 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-546-1655322498762 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:18.766 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-547-1655322498765 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:18.771 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-548-1655322498770 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:18.772 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-549-1655322498770 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:18.800 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-550-1655322498799 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:18.801 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-551-1655322498799 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:18.801 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-552-1655322498799 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:18.817 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-553-1655322498816 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:18.863 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-554-1655322498848 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:18.925 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-555-1655322498923 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:18.937 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-556-1655322498936 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:19.511 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-557-1655322499509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/fulkreykk-ships Response 200 OK +2022-06-15/15:48:19.557 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-558-1655322499554 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:19.568 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-559-1655322499567 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:19.573 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-560-1655322499571 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:19.602 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-562-1655322499602 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:19.602 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-563-1655322499602 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:19.605 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-564-1655322499604 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:19.626 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-561-1655322499602 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:19.687 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-565-1655322499686 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:19.699 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-566-1655322499697 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:19.738 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-567-1655322499737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:19.739 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-568-1655322499737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:19.739 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-569-1655322499738 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:19.739 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-570-1655322499738 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:19.740 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-571-1655322499739 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:19.740 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-572-1655322499739 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:19.742 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-573-1655322499740 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:19.768 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-574-1655322499767 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:19.768 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-575-1655322499767 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:19.768 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-576-1655322499768 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:19.783 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-577-1655322499783 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:19.829 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-578-1655322499814 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:19.894 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-579-1655322499893 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:19.908 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-580-1655322499907 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:20.019 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-581-1655322500017 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-gannan-class.mtl Response 200 OK +2022-06-15/15:48:20.028 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-582-1655322500027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-lodovik-class.mtl Response 200 OK +2022-06-15/15:48:20.028 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-585-1655322500027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-voss-class.mtl Response 200 OK +2022-06-15/15:48:20.028 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-583-1655322500027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-karnas-class.mtl Response 200 OK +2022-06-15/15:48:20.029 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-584-1655322500027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-pertona-class.mtl Response 200 OK +2022-06-15/15:48:20.035 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-588-1655322500034 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-lorus-class.mtl Response 200 OK +2022-06-15/15:48:20.035 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-586-1655322500033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-brekoryn-class.mtl Response 200 OK +2022-06-15/15:48:20.036 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-589-1655322500035 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-orsh-class.mtl Response 200 OK +2022-06-15/15:48:20.036 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-587-1655322500033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-falk-class.mtl Response 200 OK +2022-06-15/15:48:20.037 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-590-1655322500035 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-tefran-class.mtl Response 200 OK +2022-06-15/15:48:20.037 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-591-1655322500036 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-kassck-class.mtl Response 200 OK +2022-06-15/15:48:20.039 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-592-1655322500037 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-khorr-class.mtl Response 200 OK +2022-06-15/15:48:20.040 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-593-1655322500038 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-grev-ahtaumenth.mtl Response 200 OK +2022-06-15/15:48:20.213 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-595-1655322500212 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-gannan-class.diff.png Response 200 OK +2022-06-15/15:48:20.213 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-594-1655322500212 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-gannan-class.spec.png Response 200 OK +2022-06-15/15:48:20.223 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-596-1655322500221 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-lodovik-class.diff.png Response 200 OK +2022-06-15/15:48:20.223 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-597-1655322500222 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-lodovik-class.spec.png Response 200 OK +2022-06-15/15:48:20.237 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-599-1655322500236 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-karnas-class.diff.png Response 200 OK +2022-06-15/15:48:20.237 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-598-1655322500236 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-karnas-class.spec.png Response 200 OK +2022-06-15/15:48:20.252 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-601-1655322500251 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-pertona-class.spec.png Response 200 OK +2022-06-15/15:48:20.252 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-600-1655322500251 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-pertona-class.diff.png Response 200 OK +2022-06-15/15:48:20.265 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-603-1655322500263 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-voss-class.spec.png Response 200 OK +2022-06-15/15:48:20.265 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-602-1655322500263 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-voss-class.diff.png Response 200 OK +2022-06-15/15:48:20.285 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-605-1655322500283 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-brekoryn-class.diff.png Response 200 OK +2022-06-15/15:48:20.285 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-604-1655322500283 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-brekoryn-class.spec.png Response 200 OK +2022-06-15/15:48:20.302 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-607-1655322500301 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-falk-class.spec.png Response 200 OK +2022-06-15/15:48:20.302 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-606-1655322500301 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-falk-class.diff.png Response 200 OK +2022-06-15/15:48:20.318 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-609-1655322500317 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-lorus-class.spec.png Response 200 OK +2022-06-15/15:48:20.318 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-608-1655322500317 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-lorus-class.diff.png Response 200 OK +2022-06-15/15:48:20.344 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-611-1655322500343 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-orsh-class.spec.png Response 200 OK +2022-06-15/15:48:20.344 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-610-1655322500343 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-orsh-class.diff.png Response 200 OK +2022-06-15/15:48:20.364 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-613-1655322500363 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-tefran-class.spec.png Response 200 OK +2022-06-15/15:48:20.364 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-612-1655322500363 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-tefran-class.diff.png Response 200 OK +2022-06-15/15:48:20.372 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-614-1655322500370 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-kassck-class.diff.png Response 200 OK +2022-06-15/15:48:20.372 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-615-1655322500370 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-kassck-class.spec.png Response 200 OK +2022-06-15/15:48:20.386 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-616-1655322500385 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-khorr-class.diff.png Response 200 OK +2022-06-15/15:48:20.386 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-617-1655322500385 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-khorr-class.spec.png Response 200 OK +2022-06-15/15:48:20.402 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-618-1655322500400 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-grev-ahtaumenth.diff.png Response 200 OK +2022-06-15/15:48:20.402 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-619-1655322500400 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-grev-ahtaumenth.spec.png Response 200 OK +2022-06-15/15:48:20.467 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-620-1655322500404 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-gannan-class.obj Response 200 OK +2022-06-15/15:48:20.669 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-621-1655322500405 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-1-lodovik-class.obj Response 200 OK +2022-06-15/15:48:20.669 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-624-1655322500411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-brekoryn-class.obj Response 200 OK +2022-06-15/15:48:20.695 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-625-1655322500415 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-voss-class.obj Response 200 OK +2022-06-15/15:48:20.696 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-622-1655322500406 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-karnas-class.obj Response 200 OK +2022-06-15/15:48:20.757 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-627-1655322500669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-lorus-class.obj Response 200 OK +2022-06-15/15:48:20.791 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-623-1655322500408 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-2-pertona-class.obj Response 200 OK +2022-06-15/15:48:20.794 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-626-1655322500468 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-falk-class.obj Response 200 OK +2022-06-15/15:48:20.797 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-628-1655322500669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-orsh-class.obj Response 200 OK +2022-06-15/15:48:20.799 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-629-1655322500695 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-3-tefran-class.obj Response 200 OK +2022-06-15/15:48:20.813 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-630-1655322500698 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-kassck-class.obj Response 200 OK +2022-06-15/15:48:20.904 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-631-1655322500758 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-khorr-class.obj Response 200 OK +2022-06-15/15:48:20.904 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-632-1655322500791 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/fulkreykk-4-grev-ahtaumenth.obj Response 200 OK +2022-06-15/15:48:30.538 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-633-1655322510537 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets Response 200 OK +2022-06-15/15:48:30.586 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-634-1655322510584 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:30.606 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-635-1655322510604 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:30.615 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-636-1655322510613 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:30.641 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-638-1655322510639 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:30.641 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-639-1655322510639 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:30.647 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-640-1655322510646 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:30.664 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-637-1655322510639 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:30.700 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-641-1655322510698 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:30.716 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-642-1655322510714 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:30.755 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-644-1655322510754 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:30.755 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-643-1655322510754 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:30.755 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-645-1655322510754 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:30.757 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-646-1655322510756 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:30.758 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-647-1655322510757 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:30.758 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-648-1655322510757 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:30.760 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-649-1655322510757 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:30.787 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-650-1655322510787 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:30.787 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-651-1655322510787 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:30.788 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-652-1655322510787 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:30.801 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-653-1655322510800 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:30.851 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-654-1655322510833 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:30.915 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-655-1655322510913 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:30.929 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-656-1655322510929 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:31.855 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-657-1655322511852 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/arkant-horde-ships Response 200 OK +2022-06-15/15:48:31.930 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-658-1655322511929 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:31.932 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-659-1655322511930 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:31.933 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-660-1655322511933 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:31.981 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-662-1655322511979 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:31.981 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-663-1655322511979 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:31.984 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-664-1655322511983 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:31.997 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-661-1655322511979 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:32.105 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-665-1655322512103 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:32.144 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-666-1655322512143 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:32.188 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-668-1655322512187 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:32.188 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-667-1655322512187 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:32.189 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-669-1655322512188 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:32.190 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-671-1655322512189 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:32.190 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-670-1655322512189 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:32.191 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-672-1655322512190 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:32.194 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-673-1655322512191 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:32.221 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-675-1655322512220 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:32.221 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-674-1655322512220 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:32.221 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-676-1655322512221 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:32.235 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-677-1655322512233 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:32.280 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-678-1655322512264 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:32.340 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-679-1655322512339 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:32.353 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-680-1655322512353 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:32.478 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-681-1655322512476 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-eris-class.mtl Response 200 OK +2022-06-15/15:48:32.503 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-682-1655322512502 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-typhon-class.mtl Response 200 OK +2022-06-15/15:48:32.503 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-683-1655322512502 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-ahriman-class.mtl Response 200 OK +2022-06-15/15:48:32.504 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-684-1655322512503 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-apophis-class.mtl Response 200 OK +2022-06-15/15:48:32.504 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-685-1655322512503 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-azathoth-class.mtl Response 200 OK +2022-06-15/15:48:32.505 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-686-1655322512504 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-chernobog-class.mtl Response 200 OK +2022-06-15/15:48:32.507 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-688-1655322512505 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lamashtu-class.mtl Response 200 OK +2022-06-15/15:48:32.507 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-687-1655322512505 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-cipactli-class.mtl Response 200 OK +2022-06-15/15:48:32.507 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-689-1655322512506 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lotan-class.mtl Response 200 OK +2022-06-15/15:48:32.508 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-690-1655322512507 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-morgoth-class.mtl Response 200 OK +2022-06-15/15:48:32.510 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-691-1655322512509 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-tiamat-class.mtl Response 200 OK +2022-06-15/15:48:32.512 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-692-1655322512511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-charybdis-class.mtl Response 200 OK +2022-06-15/15:48:32.512 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-693-1655322512511 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-kakia-class.mtl Response 200 OK +2022-06-15/15:48:32.514 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-694-1655322512512 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-moloch-class.mtl Response 200 OK +2022-06-15/15:48:32.518 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-695-1655322512516 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-scylla-class.mtl Response 200 OK +2022-06-15/15:48:32.518 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-696-1655322512516 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-5-aedon-class.mtl Response 200 OK +2022-06-15/15:48:32.692 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-697-1655322512690 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-eris-class.diff.png Response 200 OK +2022-06-15/15:48:32.692 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-698-1655322512690 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-eris-class.spec.png Response 200 OK +2022-06-15/15:48:32.701 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-700-1655322512700 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-typhon-class.spec.png Response 200 OK +2022-06-15/15:48:32.701 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-699-1655322512699 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-typhon-class.diff.png Response 200 OK +2022-06-15/15:48:32.715 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-702-1655322512714 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-ahriman-class.spec.png Response 200 OK +2022-06-15/15:48:32.715 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-701-1655322512714 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-ahriman-class.diff.png Response 200 OK +2022-06-15/15:48:32.728 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-704-1655322512726 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-apophis-class.spec.png Response 200 OK +2022-06-15/15:48:32.728 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-703-1655322512726 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-apophis-class.diff.png Response 200 OK +2022-06-15/15:48:32.746 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-706-1655322512745 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-azathoth-class.spec.png Response 200 OK +2022-06-15/15:48:32.746 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-705-1655322512745 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-azathoth-class.diff.png Response 200 OK +2022-06-15/15:48:32.759 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-707-1655322512758 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-chernobog-class.diff.png Response 200 OK +2022-06-15/15:48:32.759 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-708-1655322512758 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-chernobog-class.spec.png Response 200 OK +2022-06-15/15:48:32.775 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-709-1655322512774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-cipactli-class.spec.png Response 200 OK +2022-06-15/15:48:32.776 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-710-1655322512774 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-cipactli-class.diff.png Response 200 OK +2022-06-15/15:48:32.790 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-712-1655322512789 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lamashtu-class.spec.png Response 200 OK +2022-06-15/15:48:32.790 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-711-1655322512789 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lamashtu-class.diff.png Response 200 OK +2022-06-15/15:48:32.807 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-714-1655322512806 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lotan-class.spec.png Response 200 OK +2022-06-15/15:48:32.807 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-713-1655322512806 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lotan-class.diff.png Response 200 OK +2022-06-15/15:48:32.821 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-715-1655322512820 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-morgoth-class.diff.png Response 200 OK +2022-06-15/15:48:32.821 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-716-1655322512820 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-morgoth-class.spec.png Response 200 OK +2022-06-15/15:48:32.840 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-718-1655322512839 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-tiamat-class.spec.png Response 200 OK +2022-06-15/15:48:32.840 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-717-1655322512839 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-tiamat-class.diff.png Response 200 OK +2022-06-15/15:48:32.852 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-719-1655322512851 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-charybdis-class.diff.png Response 200 OK +2022-06-15/15:48:32.852 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-720-1655322512851 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-charybdis-class.spec.png Response 200 OK +2022-06-15/15:48:32.865 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-722-1655322512864 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-kakia-class.spec.png Response 200 OK +2022-06-15/15:48:32.865 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-721-1655322512864 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-kakia-class.diff.png Response 200 OK +2022-06-15/15:48:32.879 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-724-1655322512878 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-moloch-class.spec.png Response 200 OK +2022-06-15/15:48:32.879 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-723-1655322512877 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-moloch-class.diff.png Response 200 OK +2022-06-15/15:48:32.892 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-725-1655322512879 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-eris-class.obj Response 200 OK +2022-06-15/15:48:32.896 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-726-1655322512894 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-scylla-class.diff.png Response 200 OK +2022-06-15/15:48:32.896 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-727-1655322512894 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-scylla-class.spec.png Response 200 OK +2022-06-15/15:48:32.911 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-729-1655322512910 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-5-aedon-class.spec.png Response 200 OK +2022-06-15/15:48:32.911 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-728-1655322512910 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-5-aedon-class.diff.png Response 200 OK +2022-06-15/15:48:33.079 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-730-1655322512912 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-1-typhon-class.obj Response 200 OK +2022-06-15/15:48:33.168 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-731-1655322512913 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-ahriman-class.obj Response 200 OK +2022-06-15/15:48:33.173 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-732-1655322512916 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-apophis-class.obj Response 200 OK +2022-06-15/15:48:33.205 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-735-1655322512935 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-cipactli-class.obj Response 200 OK +2022-06-15/15:48:33.377 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-733-1655322512918 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-2-azathoth-class.obj Response 200 OK +2022-06-15/15:48:34.085 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-738-1655322513173 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-morgoth-class.obj Response 200 OK +2022-06-15/15:48:34.391 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-739-1655322513206 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-tiamat-class.obj Response 200 OK +2022-06-15/15:48:34.438 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-734-1655322512921 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-chernobog-class.obj Response 200 OK +2022-06-15/15:48:34.457 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-736-1655322513079 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lamashtu-class.obj Response 200 OK +2022-06-15/15:48:34.468 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-737-1655322513168 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-3-lotan-class.obj Response 200 OK +2022-06-15/15:48:34.739 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-740-1655322513378 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-charybdis-class.obj Response 200 OK +2022-06-15/15:48:34.745 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-741-1655322514085 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-kakia-class.obj Response 200 OK +2022-06-15/15:48:34.785 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-743-1655322514439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-scylla-class.obj Response 200 OK +2022-06-15/15:48:34.837 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-742-1655322514392 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-4-moloch-class.obj Response 200 OK +2022-06-15/15:48:34.862 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-744-1655322514457 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/diadochi-5-aedon-class.obj Response 200 OK +2022-06-15/15:48:42.795 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-745-1655322522794 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets Response 200 OK +2022-06-15/15:48:42.843 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-746-1655322522841 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:42.848 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-747-1655322522846 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:42.848 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-748-1655322522847 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:42.899 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-750-1655322522898 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:42.899 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-751-1655322522898 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:42.901 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-752-1655322522901 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:42.923 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-749-1655322522897 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:42.975 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-753-1655322522974 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:42.990 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-754-1655322522987 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:43.027 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-756-1655322523026 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:43.027 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-755-1655322523026 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:43.028 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-757-1655322523027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:43.030 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-758-1655322523030 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:43.031 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-759-1655322523030 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:43.031 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-760-1655322523030 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:43.035 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-761-1655322523033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:43.062 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-762-1655322523060 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:43.062 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-763-1655322523060 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:43.062 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-764-1655322523060 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:43.075 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-765-1655322523074 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:43.120 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-766-1655322523104 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:43.184 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-767-1655322523183 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:43.198 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-768-1655322523198 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:43.936 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-769-1655322523932 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/military/fleets/felinae-felices-ships Response 200 OK +2022-06-15/15:48:43.976 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-770-1655322523973 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:43.991 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-771-1655322523990 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:43.998 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-772-1655322523997 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:44.026 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-774-1655322524026 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:44.026 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-775-1655322524026 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:44.028 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-776-1655322524027 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:44.048 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-773-1655322524025 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:44.103 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-777-1655322524102 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:44.119 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-778-1655322524116 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:44.157 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-779-1655322524156 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:44.157 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-780-1655322524156 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:44.157 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-781-1655322524157 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:44.158 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-782-1655322524157 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:44.158 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-783-1655322524157 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:44.158 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-784-1655322524158 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:44.161 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-785-1655322524158 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:44.184 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-786-1655322524183 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:44.184 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-787-1655322524183 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:44.184 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-788-1655322524183 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:44.203 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-789-1655322524197 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:44.248 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-790-1655322524233 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:44.312 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-791-1655322524311 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:44.324 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-792-1655322524323 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:48:44.411 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-795-1655322524409 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-margay-class.mtl Response 200 OK +2022-06-15/15:48:44.411 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-796-1655322524409 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-ocelot-class.mtl Response 200 OK +2022-06-15/15:48:44.411 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-793-1655322524409 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-kodkod-class.mtl Response 200 OK +2022-06-15/15:48:44.411 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-794-1655322524409 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-oncilla-class.mtl Response 200 OK +2022-06-15/15:48:44.412 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-797-1655322524411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-bobcat-class.mtl Response 200 OK +2022-06-15/15:48:44.412 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-798-1655322524411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-lynx-class.mtl Response 200 OK +2022-06-15/15:48:44.414 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-799-1655322524412 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-leopard-class.mtl Response 200 OK +2022-06-15/15:48:44.414 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-800-1655322524412 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-tiger-class.mtl Response 200 OK +2022-06-15/15:48:44.414 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-801-1655322524412 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-5-caracal-class.mtl Response 200 OK +2022-06-15/15:48:44.560 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-803-1655322524559 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-kodkod-class.spec.png Response 200 OK +2022-06-15/15:48:44.560 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-802-1655322524558 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-kodkod-class.diff.png Response 200 OK +2022-06-15/15:48:44.567 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-805-1655322524566 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-oncilla-class.spec.png Response 200 OK +2022-06-15/15:48:44.567 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-804-1655322524566 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-oncilla-class.diff.png Response 200 OK +2022-06-15/15:48:44.583 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-806-1655322524581 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-margay-class.diff.png Response 200 OK +2022-06-15/15:48:44.583 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-807-1655322524582 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-margay-class.spec.png Response 200 OK +2022-06-15/15:48:44.603 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-809-1655322524601 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-ocelot-class.spec.png Response 200 OK +2022-06-15/15:48:44.603 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-808-1655322524600 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-ocelot-class.diff.png Response 200 OK +2022-06-15/15:48:44.623 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-811-1655322524622 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-bobcat-class.spec.png Response 200 OK +2022-06-15/15:48:44.623 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-810-1655322524622 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-bobcat-class.diff.png Response 200 OK +2022-06-15/15:48:44.640 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-813-1655322524638 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-lynx-class.spec.png Response 200 OK +2022-06-15/15:48:44.640 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-812-1655322524638 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-lynx-class.diff.png Response 200 OK +2022-06-15/15:48:44.654 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-815-1655322524653 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-leopard-class.spec.png Response 200 OK +2022-06-15/15:48:44.654 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-814-1655322524653 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-leopard-class.diff.png Response 200 OK +2022-06-15/15:48:44.670 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-817-1655322524669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-tiger-class.spec.png Response 200 OK +2022-06-15/15:48:44.670 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-816-1655322524669 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-tiger-class.diff.png Response 200 OK +2022-06-15/15:48:44.688 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-819-1655322524687 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-5-caracal-class.spec.png Response 200 OK +2022-06-15/15:48:44.688 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-818-1655322524687 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-5-caracal-class.diff.png Response 200 OK +2022-06-15/15:48:44.696 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-820-1655322524689 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-kodkod-class.obj Response 200 OK +2022-06-15/15:48:44.696 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-821-1655322524690 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-1-oncilla-class.obj Response 200 OK +2022-06-15/15:48:44.736 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-822-1655322524691 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-margay-class.obj Response 200 OK +2022-06-15/15:48:44.750 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-823-1655322524694 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-2-ocelot-class.obj Response 200 OK +2022-06-15/15:48:44.770 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-824-1655322524698 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-bobcat-class.obj Response 200 OK +2022-06-15/15:48:44.779 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-825-1655322524703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-3-lynx-class.obj Response 200 OK +2022-06-15/15:48:44.831 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-826-1655322524703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-leopard-class.obj Response 200 OK +2022-06-15/15:48:44.872 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-828-1655322524737 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-5-caracal-class.obj Response 200 OK +2022-06-15/15:48:44.878 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-827-1655322524703 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/meshes/felinae-4-tiger-class.obj Response 200 OK +2022-06-15/15:48:59.306 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-829-1655322539303 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:48:59.357 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-830-1655322539355 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:48:59.380 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-831-1655322539379 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:48:59.396 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-832-1655322539395 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:48:59.424 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-835-1655322539423 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:48:59.425 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-834-1655322539423 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:48:59.426 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-836-1655322539426 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:48:59.452 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-833-1655322539423 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:48:59.522 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-837-1655322539520 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:48:59.545 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-838-1655322539543 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:48:59.598 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-840-1655322539597 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:48:59.598 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-839-1655322539597 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:48:59.598 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-841-1655322539597 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:48:59.600 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-842-1655322539598 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:48:59.600 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-843-1655322539599 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:48:59.601 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-844-1655322539599 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:48:59.603 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-845-1655322539600 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:48:59.635 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-846-1655322539634 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:48:59.635 [eventLoopGroupProxy-4-7] I (ktor.application) - Call #call-847-1655322539634 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:48:59.640 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-848-1655322539638 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:48:59.651 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-849-1655322539650 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:48:59.711 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-850-1655322539690 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:48:59.789 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-851-1655322539788 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:48:59.803 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-852-1655322539802 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:57:23.743 [main] I (ktor.application) - Autoreload is disabled because the development mode is off. +2022-06-15/15:57:23.820 [main] I (ktor.application) - Responding at http://127.0.0.1:8080 +2022-06-15/15:57:23.821 [main] I (ktor.application) - Application started in 0.086 seconds. +2022-06-15/15:57:23.822 [main] I (ktor.application) - Application started: io.ktor.application.Application@1372ed45 +2022-06-15/15:57:23.827 [main] D (io.netty.util.internal.logging.InternalLoggerFactory) - Using SLF4J as the default logging framework +2022-06-15/15:57:23.876 [main] D (io.netty.util.internal.PlatformDependent0) - -Dio.netty.noUnsafe: false +2022-06-15/15:57:23.877 [main] D (io.netty.util.internal.PlatformDependent0) - Java version: 8 +2022-06-15/15:57:23.877 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.theUnsafe: available +2022-06-15/15:57:23.877 [main] D (io.netty.util.internal.PlatformDependent0) - sun.misc.Unsafe.copyMemory: available +2022-06-15/15:57:23.878 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Buffer.address: available +2022-06-15/15:57:23.878 [main] D (io.netty.util.internal.PlatformDependent0) - direct buffer constructor: available +2022-06-15/15:57:23.879 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.Bits.unaligned: available, true +2022-06-15/15:57:23.879 [main] D (io.netty.util.internal.PlatformDependent0) - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9 +2022-06-15/15:57:23.879 [main] D (io.netty.util.internal.PlatformDependent0) - java.nio.DirectByteBuffer.(long, int): available +2022-06-15/15:57:23.879 [main] D (io.netty.util.internal.PlatformDependent) - sun.misc.Unsafe: available +2022-06-15/15:57:23.880 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.tmpdir: C:\Users\samfr\AppData\Local\Temp (java.io.tmpdir) +2022-06-15/15:57:23.880 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.bitMode: 64 (sun.arch.data.model) +2022-06-15/15:57:23.880 [main] D (io.netty.util.internal.PlatformDependent) - Platform: Windows +2022-06-15/15:57:23.882 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.maxDirectMemory: 7589068800 bytes +2022-06-15/15:57:23.882 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.uninitializedArrayAllocationThreshold: -1 +2022-06-15/15:57:23.883 [main] D (io.netty.util.internal.CleanerJava6) - java.nio.ByteBuffer.cleaner(): available +2022-06-15/15:57:23.883 [main] D (io.netty.util.internal.PlatformDependent) - -Dio.netty.noPreferDirect: false +2022-06-15/15:57:24.969 [main] D (io.netty.channel.MultithreadEventLoopGroup) - -Dio.netty.eventLoopThreads: 24 +2022-06-15/15:57:24.980 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024 +2022-06-15/15:57:24.980 [main] D (io.netty.util.internal.InternalThreadLocalMap) - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096 +2022-06-15/15:57:24.986 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.noKeySetOptimization: false +2022-06-15/15:57:24.987 [main] D (io.netty.channel.nio.NioEventLoop) - -Dio.netty.selectorAutoRebuildThreshold: 512 +2022-06-15/15:57:24.994 [main] D (io.netty.util.internal.PlatformDependent) - org.jctools-core.MpscChunkedArrayQueue: available +2022-06-15/15:57:25.038 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.processId: 1788 (auto-detected) +2022-06-15/15:57:25.040 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv4Stack: false +2022-06-15/15:57:25.040 [main] D (io.netty.util.NetUtil) - -Djava.net.preferIPv6Addresses: false +2022-06-15/15:57:26.046 [main] D (io.netty.util.NetUtilInitializations) - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1) +2022-06-15/15:57:26.047 [main] D (io.netty.util.NetUtil) - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200 +2022-06-15/15:57:27.090 [main] D (io.netty.channel.DefaultChannelId) - -Dio.netty.machineId: 30:24:32:ff:fe:7e:95:aa (auto-detected) +2022-06-15/15:57:27.097 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.level: simple +2022-06-15/15:57:27.097 [main] D (io.netty.util.ResourceLeakDetector) - -Dio.netty.leakDetection.targetRecords: 4 +2022-06-15/15:57:27.113 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numHeapArenas: 24 +2022-06-15/15:57:27.113 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.numDirectArenas: 24 +2022-06-15/15:57:27.113 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.pageSize: 8192 +2022-06-15/15:57:27.113 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxOrder: 11 +2022-06-15/15:57:27.113 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.chunkSize: 16777216 +2022-06-15/15:57:27.113 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.smallCacheSize: 256 +2022-06-15/15:57:27.114 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.normalCacheSize: 64 +2022-06-15/15:57:27.114 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedBufferCapacity: 32768 +2022-06-15/15:57:27.114 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimInterval: 8192 +2022-06-15/15:57:27.114 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.cacheTrimIntervalMillis: 0 +2022-06-15/15:57:27.114 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.useCacheForAllThreads: true +2022-06-15/15:57:27.114 [main] D (io.netty.buffer.PooledByteBufAllocator) - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023 +2022-06-15/15:57:27.123 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.allocator.type: pooled +2022-06-15/15:57:27.123 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.threadLocalDirectBufferSize: 0 +2022-06-15/15:57:27.123 [main] D (io.netty.buffer.ByteBufUtil) - -Dio.netty.maxThreadLocalCharBufferSize: 16384 +2022-06-15/15:57:29.299 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkAccessible: true +2022-06-15/15:57:29.299 [eventLoopGroupProxy-3-1] D (io.netty.buffer.AbstractByteBuf) - -Dio.netty.buffer.checkBounds: true +2022-06-15/15:57:29.300 [eventLoopGroupProxy-3-1] D (io.netty.util.ResourceLeakDetectorFactory) - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@24304f7e +2022-06-15/15:57:29.353 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.maxCapacityPerThread: 4096 +2022-06-15/15:57:29.353 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.ratio: 8 +2022-06-15/15:57:29.353 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.chunkSize: 32 +2022-06-15/15:57:29.353 [eventLoopGroupProxy-3-1] D (io.netty.util.Recycler) - -Dio.netty.recycler.blocking: false +2022-06-15/15:57:29.464 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-1-1655323049398 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:57:29.580 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-2-1655323049498 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:57:29.580 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-4-1655323049520 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:57:29.585 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-3-1655323049519 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:57:29.692 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-6-1655323049688 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:57:29.692 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-7-1655323049688 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:57:29.698 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-8-1655323049694 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:57:29.749 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-5-1655323049688 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:57:29.799 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-9-1655323049795 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:57:29.821 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-10-1655323049817 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:57:29.891 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-12-1655323049887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:57:29.893 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-11-1655323049887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:57:29.893 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-13-1655323049887 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:57:29.896 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-14-1655323049889 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:57:29.902 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-17-1655323049898 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:57:29.904 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-16-1655323049898 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:57:29.907 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-15-1655323049896 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:57:29.922 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-18-1655323049918 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/icon.svg Response 200 OK +2022-06-15/15:57:29.948 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-20-1655323049945 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:57:29.948 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-19-1655323049945 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:57:29.951 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-21-1655323049948 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:57:29.969 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-22-1655323049966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:57:30.034 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-23-1655323050002 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:57:30.102 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-24-1655323050100 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:57:30.119 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-25-1655323050114 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:57:36.947 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-26-1655323056944 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:57:36.981 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-27-1655323056979 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:57:36.990 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-28-1655323056985 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:57:36.995 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-29-1655323056991 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:57:37.035 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-31-1655323057033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:57:37.037 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-32-1655323057033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:57:37.039 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-33-1655323057037 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:57:37.076 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-30-1655323057033 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:57:37.131 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-34-1655323057128 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:57:37.153 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-35-1655323057149 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:57:37.200 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-37-1655323057198 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:57:37.202 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-36-1655323057198 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:57:37.202 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-38-1655323057198 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:57:37.205 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-40-1655323057200 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:57:37.205 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-39-1655323057200 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:57:37.207 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-41-1655323057200 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:57:37.213 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-42-1655323057202 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:57:37.243 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-43-1655323057242 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:57:37.245 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-45-1655323057242 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:57:37.245 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-44-1655323057242 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:57:37.267 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-46-1655323057264 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:57:37.338 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-47-1655323057305 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:57:37.427 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-48-1655323057424 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:57:37.445 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-49-1655323057444 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:57:38.109 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-50-1655323058077 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places/milky-way Response 200 OK +2022-06-15/15:57:38.154 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-51-1655323058150 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:57:38.190 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-52-1655323058187 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:57:38.394 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-53-1655323058368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-masra-draetsen.png Response 200 OK +2022-06-15/15:57:38.397 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-55-1655323058368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-isarnareykk.png Response 200 OK +2022-06-15/15:57:38.399 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-56-1655323058368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-chaebodes-star-empire.png Response 200 OK +2022-06-15/15:57:38.403 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-58-1655323058373 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-viperarum.png Response 200 OK +2022-06-15/15:57:38.423 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-60-1655323058398 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-tylan-theocracy.png Response 200 OK +2022-06-15/15:57:38.425 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-57-1655323058369 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-noctiferorum.png Response 200 OK +2022-06-15/15:57:38.433 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-61-1655323058400 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-fulkreykk-1.png Response 200 OK +2022-06-15/15:57:38.433 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-62-1655323058405 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-fulkreykk-2.png Response 200 OK +2022-06-15/15:57:38.436 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-59-1655323058395 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-arkant-horde.png Response 200 OK +2022-06-15/15:57:38.440 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-64-1655323058426 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ilkhan-commune.png Response 200 OK +2022-06-15/15:57:38.441 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-67-1655323058439 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:57:38.442 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-63-1655323058424 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-terran-revolutionary-republic.png Response 200 OK +2022-06-15/15:57:38.445 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-66-1655323058435 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-telareth-republic.png Response 200 OK +2022-06-15/15:57:38.451 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-68-1655323058443 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/logo-mjolnir-energy.png Response 200 OK +2022-06-15/15:57:38.453 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-65-1655323058435 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-mechyrdia.png Response 200 OK +2022-06-15/15:57:38.457 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-69-1655323058447 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-felinae-felices.png Response 200 OK +2022-06-15/15:57:38.459 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-70-1655323058453 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-theudareykk.png Response 200 OK +2022-06-15/15:57:38.482 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-72-1655323058458 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-diabolorum.png Response 200 OK +2022-06-15/15:57:38.575 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-71-1655323058455 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-stahlareykk.png Response 200 OK +2022-06-15/15:57:38.575 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-73-1655323058462 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-lihann-empire.png Response 200 OK +2022-06-15/15:57:38.575 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-75-1655323058470 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-vestigium.png Response 200 OK +2022-06-15/15:57:38.576 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-74-1655323058462 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-res-nostra.png Response 200 OK +2022-06-15/15:57:38.581 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-77-1655323058577 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ferthlon-internation.png Response 200 OK +2022-06-15/15:57:38.583 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-79-1655323058577 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:57:38.586 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-76-1655323058483 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-drakhassi-federation.png Response 200 OK +2022-06-15/15:57:38.586 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-80-1655323058579 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ndrc.png Response 200 OK +2022-06-15/15:57:38.602 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-81-1655323058583 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ccc.png Response 200 OK +2022-06-15/15:57:38.602 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-78-1655323058577 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-rathian-consensus.png Response 200 OK +2022-06-15/15:57:38.605 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-84-1655323058589 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-ilkhan-republic.png Response 200 OK +2022-06-15/15:57:38.607 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-83-1655323058588 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-niska-republic.png Response 200 OK +2022-06-15/15:57:38.612 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-86-1655323058605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-swartareykk.png Response 200 OK +2022-06-15/15:57:38.613 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-85-1655323058605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-lyudareykk.png Response 200 OK +2022-06-15/15:57:38.618 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-87-1655323058605 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-magistrorum.png Response 200 OK +2022-06-15/15:57:38.619 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-82-1655323058585 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-corsairs.png Response 200 OK +2022-06-15/15:57:38.621 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-88-1655323058610 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-togatorum.png Response 200 OK +2022-06-15/15:57:38.626 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-91-1655323058622 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:57:38.628 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-92-1655323058627 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:57:38.649 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-93-1655323058648 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:57:38.693 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-90-1655323058621 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:57:38.707 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-89-1655323058620 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-mechyrdia-protectorate.png Response 200 OK +2022-06-15/15:57:38.909 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-94-1655323058897 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/flag-diadochus-humilitatum.png Response 200 OK +2022-06-15/15:57:39.043 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-54-1655323058368 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /assets/images/map-galaxy.png Response 200 OK +2022-06-15/15:57:39.202 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-95-1655323059200 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:57:39.291 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-98-1655323059288 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:57:39.291 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-97-1655323059288 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:57:39.292 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-99-1655323059288 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:57:39.293 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-101-1655323059289 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:57:39.293 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-96-1655323059287 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:57:39.295 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-100-1655323059289 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:57:39.300 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-102-1655323059294 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:57:39.337 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-103-1655323059335 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:57:39.339 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-104-1655323059335 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:57:39.339 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-105-1655323059336 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:57:39.360 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-106-1655323059358 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:57:39.802 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-107-1655323059773 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:57:39.882 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-108-1655323059880 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:57:39.898 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-109-1655323059896 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:57:50.041 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-110-1655323070039 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore/places Response 200 OK +2022-06-15/15:57:50.082 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-111-1655323070078 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:57:50.099 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-112-1655323070098 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:57:50.108 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-113-1655323070107 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:57:50.133 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-116-1655323070131 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:57:50.133 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-115-1655323070130 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:57:50.135 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-117-1655323070133 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:57:50.163 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-114-1655323070130 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:57:50.207 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-118-1655323070205 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:57:50.222 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-119-1655323070221 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:57:50.260 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-121-1655323070259 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:57:50.260 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-120-1655323070258 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:57:50.260 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-122-1655323070259 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:57:50.260 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-123-1655323070259 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:57:50.261 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-124-1655323070259 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:57:50.261 [eventLoopGroupProxy-4-6] I (ktor.application) - Call #call-125-1655323070260 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:57:50.265 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-126-1655323070260 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:57:50.290 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-127-1655323070288 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:57:50.291 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-128-1655323070288 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:57:50.291 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-129-1655323070289 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:57:50.304 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-130-1655323070302 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:57:50.352 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-131-1655323070332 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:57:50.413 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-132-1655323070411 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:57:50.426 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-133-1655323070425 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK +2022-06-15/15:57:50.721 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-134-1655323070717 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /lore Response 200 OK +2022-06-15/15:57:50.765 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-135-1655323070764 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/style.css Response 200 OK +2022-06-15/15:57:50.778 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-136-1655323070773 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js Response 200 OK +2022-06-15/15:57:50.779 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-137-1655323070777 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/init.js Response 200 OK +2022-06-15/15:57:50.827 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-138-1655323070826 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/panel.svg Response 200 OK +2022-06-15/15:57:50.827 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-140-1655323070826 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/external-link.svg Response 200 OK +2022-06-15/15:57:50.829 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-141-1655323070827 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/gltf-viewer.html Response 200 OK +2022-06-15/15:57:50.858 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-139-1655323070826 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/images/background.jpg Response 200 OK +2022-06-15/15:57:50.900 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-142-1655323070900 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/polymer-element.html Response 200 OK +2022-06-15/15:57:50.922 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-143-1655323070919 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html Response 200 OK +2022-06-15/15:57:50.968 [eventLoopGroupProxy-4-3] I (ktor.application) - Call #call-147-1655323070966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html Response 200 OK +2022-06-15/15:57:50.968 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-145-1655323070966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html Response 200 OK +2022-06-15/15:57:50.969 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-146-1655323070966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html Response 200 OK +2022-06-15/15:57:50.969 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-144-1655323070966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/boot.html Response 200 OK +2022-06-15/15:57:50.970 [eventLoopGroupProxy-4-5] I (ktor.application) - Call #call-148-1655323070966 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html Response 200 OK +2022-06-15/15:57:50.974 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-149-1655323070971 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html Response 200 OK +2022-06-15/15:57:50.976 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-150-1655323070972 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html Response 200 OK +2022-06-15/15:57:51.014 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-152-1655323071012 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/path.html Response 200 OK +2022-06-15/15:57:51.014 [eventLoopGroupProxy-4-2] I (ktor.application) - Call #call-151-1655323071012 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html Response 200 OK +2022-06-15/15:57:51.015 [eventLoopGroupProxy-4-4] I (ktor.application) - Call #call-153-1655323071013 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html Response 200 OK +2022-06-15/15:57:51.032 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-154-1655323071030 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/bower_components/polymer/lib/utils/async.html Response 200 OK +2022-06-15/15:57:51.087 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-155-1655323071069 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three.js Response 200 OK +2022-06-15/15:57:51.150 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-156-1655323071148 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/three-examples.js Response 200 OK +2022-06-15/15:57:51.165 [eventLoopGroupProxy-4-1] I (ktor.application) - Call #call-157-1655323071164 Client 127.0.0.1 `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0` Request GET /static/gltf-viewer/js/OrbitControls.js Response 200 OK diff --git a/patch b/patch new file mode 100644 index 0000000..4de65ee --- /dev/null +++ b/patch @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +screen -S factbooks -X quit +git pull +/opt/gradle/gradle-7.1/bin/gradle shadowJar +screen -dmS factbooks /opt/gradle/gradle-7.1/bin/gradle runShadow diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..a30b383 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,3 @@ + +rootProject.name = "factbooks" + diff --git a/src/main/kotlin/info/mechyrdia/Configuration.kt b/src/main/kotlin/info/mechyrdia/Configuration.kt new file mode 100644 index 0000000..49b2f63 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/Configuration.kt @@ -0,0 +1,48 @@ +package info.mechyrdia + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import java.io.File + +@Serializable +data class Configuration( + val host: String = "127.0.0.1", + val port: Int = 8080, + + val articleDir: String = "../lore", + val assetDir: String = "../assets", +) { + companion object { + + private val DEFAULT_CONFIG = Configuration() + + private var currentConfig: Configuration? = null + + val CurrentConfiguration: Configuration + get() { + currentConfig?.let { return it } + + val file = File(System.getProperty("factbooks.configpath", "./config.json")) + if (!file.isFile) { + if (file.exists()) + file.deleteRecursively() + + val json = JsonConfigCodec.encodeToString(serializer(), DEFAULT_CONFIG) + file.writeText(json, Charsets.UTF_8) + return DEFAULT_CONFIG + } + + val json = file.readText() + return JsonConfigCodec.decodeFromString(serializer(), json).also { currentConfig = it } + } + + @OptIn(ExperimentalSerializationApi::class) + val JsonConfigCodec = Json { + prettyPrint = true + prettyPrintIndent = "\t" + + useAlternativeNames = false + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/Factbooks.kt b/src/main/kotlin/info/mechyrdia/Factbooks.kt new file mode 100644 index 0000000..c4268c6 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/Factbooks.kt @@ -0,0 +1,108 @@ +package info.mechyrdia + +import info.mechyrdia.lore.* +import io.ktor.application.* +import io.ktor.features.* +import io.ktor.html.* +import io.ktor.http.* +import io.ktor.http.content.* +import io.ktor.request.* +import io.ktor.response.* +import io.ktor.routing.* +import io.ktor.server.engine.* +import io.ktor.server.netty.* +import org.slf4j.event.Level +import java.io.File +import java.io.IOException +import java.util.concurrent.atomic.AtomicLong + +object Factbooks { + @JvmStatic + fun main(args: Array) { + System.setProperty("logback.statusListenerClass", "ch.qos.logback.core.status.NopStatusListener") + + System.setProperty("io.ktor.development", "false") + + embeddedServer(Netty, port = Configuration.CurrentConfiguration.port, host = Configuration.CurrentConfiguration.host) { + install(IgnoreTrailingSlash) + install(XForwardedHeaderSupport) + + install(CallId) { + val counter = AtomicLong(0) + generate { + "call-${counter.incrementAndGet().toULong()}-${System.currentTimeMillis()}" + } + } + + install(CallLogging) { + level = Level.INFO + + callIdMdc("ktor-call-id") + + format { call -> + "Call #${call.callId} Client ${call.request.origin.remoteHost} `${call.request.userAgent()}` Request ${call.request.httpMethod.value} ${call.request.uri} Response ${call.response.status()}" + } + } + + install(StatusPages) { + status(HttpStatusCode.NotFound) { + call.respondHtml(HttpStatusCode.NotFound, call.error404()) + } + + exception { (url, permanent) -> + call.respondRedirect(url, permanent) + } + exception { + call.respondHtml(HttpStatusCode.BadRequest, call.error400()) + } + exception { + call.respondHtml(HttpStatusCode.NotFound, call.error404()) + } + exception { + call.respondHtml(HttpStatusCode.NotFound, call.error404()) + } + + exception { + call.respondHtml(HttpStatusCode.InternalServerError, call.error503()) + throw it + } + } + + routing { + get("/") { + redirect("/lore") + } + + static("/static") { + resources("static") + } + + get("/lore/{path...}") { + call.respondHtml(HttpStatusCode.OK, call.loreArticlePage()) + } + + static("/assets") { + files(File(Configuration.CurrentConfiguration.assetDir)) + } + + get("/change-theme") { + call.respondHtml(HttpStatusCode.OK, call.changeThemePage()) + } + + post("/change-theme") { + val newTheme = when (call.receiveParameters()["theme"]) { + "light" -> "light" + "dark" -> "dark" + else -> "system" + } + call.response.cookies.append("factbook-theme", newTheme, maxAge = Int.MAX_VALUE.toLong()) + redirect("/lore") + } + + post("/tylan-lang") { + call.respondText(TylanAlphabet.tylanToFontAlphabet(call.receiveText())) + } + } + }.start(wait = true) + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/article_listing.kt b/src/main/kotlin/info/mechyrdia/lore/article_listing.kt new file mode 100644 index 0000000..9e953c1 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/article_listing.kt @@ -0,0 +1,27 @@ +package info.mechyrdia.lore + +import kotlinx.html.UL +import kotlinx.html.a +import kotlinx.html.li +import kotlinx.html.ul +import java.io.File + +data class ArticleNode(val name: String, val subNodes: List) + +fun File.toArticleNode(): ArticleNode = ArticleNode( + name, + listFiles()?.map { it.toArticleNode() }.orEmpty() +) + +fun List.renderInto(list: UL, base: String? = null) { + val prefix = base?.let { "$it/" } ?: "" + forEach { + list.li { + a(href = "/lore/$prefix${it.name}") { +it.name } + if (it.subNodes.isNotEmpty()) + ul { + it.subNodes.renderInto(this, "$prefix${it.name}") + } + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/html_utils.kt b/src/main/kotlin/info/mechyrdia/lore/html_utils.kt new file mode 100644 index 0000000..a446df1 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/html_utils.kt @@ -0,0 +1,17 @@ +package info.mechyrdia.lore + +import kotlinx.html.MAIN +import kotlinx.html.SECTION +import kotlinx.html.section + +fun interface SECTIONS { + fun section(body: SECTION.() -> Unit) +} + +fun MAIN.sectioned(): SECTIONS = MainSections(this) + +private class MainSections(private val delegate: MAIN) : SECTIONS { + override fun section(body: SECTION.() -> Unit) { + delegate.section(block = body) + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/http_utils.kt b/src/main/kotlin/info/mechyrdia/lore/http_utils.kt new file mode 100644 index 0000000..b3daef9 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/http_utils.kt @@ -0,0 +1,5 @@ +package info.mechyrdia.lore + +data class HttpRedirectException(val url: String, val permanent: Boolean) : RuntimeException() + +fun redirect(url: String, permanent: Boolean = false): Nothing = throw HttpRedirectException(url, permanent) diff --git a/src/main/kotlin/info/mechyrdia/lore/parser.kt b/src/main/kotlin/info/mechyrdia/lore/parser.kt new file mode 100644 index 0000000..1368bf6 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/parser.kt @@ -0,0 +1,180 @@ +package info.mechyrdia.lore + +data class TextParserScope( + val write: Appendable, + val tags: TextParserTags, + val ctx: TContext +) + +sealed class TextParserState( + val scope: TextParserScope, + val insideTags: List>, + val insideDirectTags: List +) { + abstract fun processCharacter(char: Char): TextParserState + abstract fun processEndOfText() + + protected fun appendText(text: String) { + scope.write.append( + insideTags.foldRight(censorText(text)) { (tag, param), t -> + (scope.tags[tag] as? TextParserTagType.Indirect) + ?.process(param, t, scope.ctx) + ?: "[$tag${param?.let { "=$it" } ?: ""}]$t[/$tag]" + } + ) + } + + protected fun appendTextRaw(text: String) { + scope.write.append(text) + } + + class Initial(scope: TextParserScope) : TextParserState(scope, listOf(), listOf()) { + override fun processCharacter(char: Char): TextParserState { + return if (char == '[') + OpenTag(scope, "", insideTags, insideDirectTags) + else + PlainText(scope, "$char", insideTags, insideDirectTags) + } + + override fun processEndOfText() { + // Do nothing + } + } + + class PlainText(scope: TextParserScope, val text: String, insideTags: List>, insideDirectTags: List) : TextParserState(scope, insideTags, insideDirectTags) { + override fun processCharacter(char: Char): TextParserState { + return if (char == '[') { + appendText(text) + OpenTag(scope, "", insideTags, insideDirectTags) + } else if (char == '\n' && text.endsWith('\n')) { + appendText(text.removeSuffix("\n")) + + val newline = if (insideDirectTags.isEmpty()) + "

" + else + "
" + + appendTextRaw(newline) + PlainText(scope, "", insideTags, insideDirectTags) + } else + PlainText(scope, text + char, insideTags, insideDirectTags) + } + + override fun processEndOfText() { + appendText(text) + } + } + + class NoFormatText(scope: TextParserScope, val text: String, insideTags: List>, insideDirectTags: List) : TextParserState(scope, insideTags, insideDirectTags) { + override fun processCharacter(char: Char): TextParserState { + val newText = text + char + return if (newText.endsWith("[/$NO_FORMAT_TAG]")) { + appendText(newText.removeSuffix("[/$NO_FORMAT_TAG]")) + PlainText(scope, "", insideTags, insideDirectTags) + } else if (newText.endsWith('\n')) { + appendText(newText.removeSuffix("\n")) + appendTextRaw("
") + NoFormatText(scope, "", insideTags, insideDirectTags) + } else + NoFormatText(scope, newText, insideTags, insideDirectTags) + } + + override fun processEndOfText() { + appendText(text) + } + } + + class OpenTag(scope: TextParserScope, val tag: String, insideTags: List>, insideDirectTags: List) : TextParserState(scope, insideTags, insideDirectTags) { + override fun processCharacter(char: Char): TextParserState { + return if (char == ']') { + if (tag.equals(NO_FORMAT_TAG, ignoreCase = true)) + NoFormatText(scope, "", insideTags, insideDirectTags) + else if (scope.tags[tag] is TextParserTagType.Direct) { + (scope.tags[tag] as? TextParserTagType.Direct)?.begin(null, scope.ctx)?.let { + appendTextRaw(it) + } + + PlainText(scope, "", insideTags, insideDirectTags + tag) + } else + PlainText(scope, "", insideTags + (tag to null), insideDirectTags) + } else if (char == '/' && tag == "") + CloseTag(scope, tag, insideTags, insideDirectTags) + else if (char == '=' && tag != "") + TagParam(scope, tag, "", insideTags, insideDirectTags) + else + OpenTag(scope, tag + char, insideTags, insideDirectTags) + } + + override fun processEndOfText() { + appendText("[$tag") + } + } + + class TagParam(scope: TextParserScope, val tag: String, val param: String, insideTags: List>, insideDirectTags: List) : TextParserState(scope, insideTags, insideDirectTags) { + override fun processCharacter(char: Char): TextParserState { + return if (char == ']') { + val tagType = scope.tags[tag] + if (tagType is TextParserTagType.Direct) { + appendTextRaw(tagType.begin(param, scope.ctx)) + + PlainText(scope, "", insideTags, insideDirectTags + tag) + } else + PlainText(scope, "", insideTags + (tag to param), insideDirectTags) + } else + TagParam(scope, tag, param + char, insideTags, insideDirectTags) + } + + override fun processEndOfText() { + appendText("[$tag=$param") + } + } + + class CloseTag(scope: TextParserScope, val tag: String, insideTags: List>, insideDirectTags: List) : TextParserState(scope, insideTags, insideDirectTags) { + override fun processCharacter(char: Char): TextParserState { + return if (char == ']') { + val tagType = scope.tags[tag] + if (tagType is TextParserTagType.Direct && insideDirectTags.last().equals(tag, ignoreCase = true)) { + appendTextRaw(tagType.end(scope.ctx)) + + PlainText(scope, "", insideTags, insideDirectTags.dropLast(1)) + } else if (insideTags.isNotEmpty() && insideTags.last().first.equals(tag, ignoreCase = true)) { + PlainText(scope, "", insideTags.dropLast(1), insideDirectTags) + } else { + appendText("[/$tag]") + PlainText(scope, "", insideTags, insideDirectTags) + } + } else CloseTag(scope, tag + char, insideTags, insideDirectTags) + } + + override fun processEndOfText() { + appendText("[/$tag") + } + } + + companion object { + const val NO_FORMAT_TAG = "noformat" + + fun censorText(uncensored: String) = uncensored + .replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace("\"", """) + + fun uncensorText(censored: String) = censored + .replace(""", "\"") + .replace("<", "<") + .replace(">", ">") + .replace("&", "&") + + fun parseText(text: String, tags: TextParserTags, context: TContext): String { + val builder = StringBuilder() + try { + val fixedText = text.replace("\r\n", "\n").replace('\r', '\n') + fixedText.fold>(Initial(TextParserScope(builder, tags, context))) { state, char -> state.processCharacter(char) }.processEndOfText() + } catch (ex: Exception) { + return "

$builder

INTERNAL ERROR

${ex.stackTraceToString()}
" + } + return "

$builder

" + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/parser_tags.kt b/src/main/kotlin/info/mechyrdia/lore/parser_tags.kt new file mode 100644 index 0000000..63f173e --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/parser_tags.kt @@ -0,0 +1,359 @@ +package info.mechyrdia.lore + +sealed class TextParserTagType { + data class Direct(val beginFunc: (String?, TContext) -> String, val endFunc: (TContext) -> String) : TextParserTagType() { + fun begin(param: String?, context: TContext) = beginFunc(param, context) + fun end(context: TContext) = endFunc(context) + } + + data class Indirect(val processFunc: (String?, String, TContext) -> String) : TextParserTagType() { + fun process(param: String?, content: String, context: TContext) = processFunc(param, content, context) + } +} + +@JvmInline +value class TextParserTags private constructor(val tags: Map>) { + operator fun get(name: String) = tags[name.lowercase()] + + companion object { + operator fun invoke(tags: Map>) = TextParserTags(tags.mapKeys { (name, _) -> name.lowercase() }) + } +} + +enum class TextParserFormattingTag(val type: TextParserTagType) { + // Basic formatting + B( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + I( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + U( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + S( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + SUP( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + SUB( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + COLOR( + TextParserTagType.Direct( + { tagParam, _ -> + val color = tagParam?.toIntOrNull(16)?.toString(16)?.padStart(6, '0') + val style = color?.let { " style=\"color: #$it\"" } ?: "" + "" + }, + { "" }, + ) + ), + IPA( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + CODE( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + H1( + TextParserTagType.Indirect { _, content, _ -> + val anchor = TextParserToCBuilderTag.headerContentToAnchor(content) + "

$content

" + } + ), + H2( + TextParserTagType.Indirect { _, content, _ -> + val anchor = TextParserToCBuilderTag.headerContentToAnchor(content) + "

$content

${TextParserToCBuilderTag.RETURN_TO_TOP}" + } + ), + H3( + TextParserTagType.Indirect { _, content, _ -> + val anchor = TextParserToCBuilderTag.headerContentToAnchor(content) + "

$content

${TextParserToCBuilderTag.RETURN_TO_TOP}" + } + ), + H4( + TextParserTagType.Indirect { _, content, _ -> + val anchor = TextParserToCBuilderTag.headerContentToAnchor(content) + "

$content

${TextParserToCBuilderTag.RETURN_TO_TOP}" + } + ), + H5( + TextParserTagType.Indirect { _, content, _ -> + val anchor = TextParserToCBuilderTag.headerContentToAnchor(content) + "
$content
${TextParserToCBuilderTag.RETURN_TO_TOP}" + } + ), + H6( + TextParserTagType.Indirect { _, content, _ -> + val anchor = TextParserToCBuilderTag.headerContentToAnchor(content) + "
$content
${TextParserToCBuilderTag.RETURN_TO_TOP}" + } + ), + ALIGN( + TextParserTagType.Direct( + { tagParam, _ -> + val alignments = setOf("left", "center", "right", "justify") + val alignment = tagParam?.takeIf { it in alignments } + val styleAttr = alignment?.let { " style=\"text-align: $it\"" } ?: "" + "" + }, + { "" }, + ) + ), + ASIDE( + TextParserTagType.Direct( + { tagParam, _ -> + val floats = setOf("left", "right") + val float = tagParam?.takeIf { it in floats } ?: "right" + "
" + }, + { "
" }, + ) + ), + + // Resource showing + IMAGE( + TextParserTagType.Indirect { tagParam, content, _ -> + val imageUrl = sanitizeLink(content) + + val (width, height) = getSizeParam(tagParam) + val sizeAttrs = getImageSizeAttributes(width, height) + + "" + } + ), + MODEL( + TextParserTagType.Indirect { tagParam, content, _ -> + val modelUrl = sanitizeLink(content) + + val (width, height) = getSizeParam(tagParam) + val sizeAttrs = getImageSizeAttributes(width, height) + + "" + } + ), + + // Lists + UL( + TextParserTagType.Direct( + { _, _ -> "
    " }, + { "
" }, + ) + ), + OL( + TextParserTagType.Direct( + { _, _ -> "
    " }, + { "
" }, + ) + ), + LI( + TextParserTagType.Direct( + { _, _ -> "
  • " }, + { "
  • " }, + ) + ), + + // Tables + TABLE( + TextParserTagType.Direct( + { _, _ -> "" }, + { "
    " }, + ) + ), + TR( + TextParserTagType.Direct( + { _, _ -> "" }, + { "" }, + ) + ), + TD( + TextParserTagType.Direct( + { tagParam, _ -> + + val (width, height) = getSizeParam(tagParam) + val sizeAttrs = getTableSizeAttributes(width, height) + + "" + + }, + { "" }, + ) + ), + TH( + TextParserTagType.Direct( + { tagParam, _ -> + + val (width, height) = getSizeParam(tagParam) + val sizeAttrs = getTableSizeAttributes(width, height) + + "" + + }, + { "" }, + ) + ), + + // Hyperformatting + LINK( + TextParserTagType.Direct( + { tagParam, _ -> + val param = tagParam?.let { TextParserState.censorText(it) } + val url = param?.let { if (it.startsWith('/')) "/lore$it" else it } + val attr = url?.let { " href=\"$it\"" } ?: "" + + "" + }, + { "" }, + ) + ), + EXTLINK( + TextParserTagType.Direct( + { tagParam, _ -> + val url = tagParam?.let { TextParserState.censorText(it) } + val attr = url?.let { " href=\"$it\"" } ?: "" + + "" + }, + { "" }, + ) + ), + ANCHOR( + TextParserTagType.Indirect { _, content, _ -> + val anchor = sanitizeLink(content) + "" + } + ), + + // Conlangs + LANG( + TextParserTagType.Indirect { tagParam, content, _ -> + if (tagParam?.equals("tylan", ignoreCase = true) == true) { + val uncensored = TextParserState.uncensorText(content) + val tylan = TylanAlphabet.tylanToFontAlphabet(uncensored) + val recensored = TextParserState.censorText(tylan) + "$recensored" + } else content + } + ), + ALPHABET( + TextParserTagType.Indirect { _, content, _ -> + if (content.equals("tylan", ignoreCase = true)) { + """ + |
    + |

    Latin Alphabet:

    + | + |

    Tylan Alphabet:

    + | + |
    + """.trimMargin() + } else content + } + ), + + // DANGER ZONE + RAWHTML( + TextParserTagType.Indirect { _, content, _ -> + TextParserState.uncensorText(content) + } + ), + ; + + companion object { + val asTags: TextParserTags + get() = TextParserTags(values().associate { it.name to it.type }) + + fun sanitizeLink(html: String) = html.replace(Regex("[^#a-zA-Z0-9._\\-]"), "").replace("..", ".") + + fun getSizeParam(tagParam: String?): Pair = tagParam?.let { resolution -> + val parts = resolution.split('x') + parts.getOrNull(0)?.toIntOrNull() to parts.getOrNull(1)?.toIntOrNull() + } ?: (null to null) + + fun getTableSizeAttributes(width: Int?, height: Int?) = (width?.let { " colspan=\"$it\"" } ?: "") + (height?.let { " rowspan=\"$it\"" } ?: "") + fun getImageSizeAttributes(width: Int?, height: Int?) = " style=\"" + (width?.let { "width: ${it * 0.032}vmin;" } ?: "") + (height?.let { "height: ${it * 0.032}vmin;" } ?: "") + "\"" + } +} + +enum class TextParserToCBuilderTag(val type: TextParserTagType) { + H1( + TextParserTagType.Indirect { _, content, builder -> + builder.add(headerContentToLabel(content), headerContentToAnchor(content)) + content + } + ), + H2( + TextParserTagType.Indirect { _, content, builder -> + val label = headerContentToLabel(content) + builder.add("- $label", headerContentToAnchor(content)) + content + } + ), + H3( + TextParserTagType.Indirect { _, content, builder -> + val label = headerContentToLabel(content) + builder.add("-- $label", headerContentToAnchor(content)) + content + } + ), + H4( + TextParserTagType.Indirect { _, content, builder -> + val label = headerContentToLabel(content) + builder.add("--- $label", headerContentToAnchor(content)) + content + } + ), + H5( + TextParserTagType.Indirect { _, content, builder -> + val label = headerContentToLabel(content) + builder.add("---- $label", headerContentToAnchor(content)) + content + } + ), + H6( + TextParserTagType.Indirect { _, content, builder -> + val label = headerContentToLabel(content) + builder.add("----- $label", headerContentToAnchor(content)) + content + } + ); + + companion object { + val NON_ANCHOR_CHAR = Regex("[^a-zA-Z\\d\\-]") + val INSIDE_TAG_TEXT = Regex("\\[.*?]") + + fun headerContentToLabel(content: String) = content.replace(INSIDE_TAG_TEXT, "") + fun headerContentToAnchor(content: String) = headerContentToLabel(content).replace(NON_ANCHOR_CHAR, "-") + + val asTags: TextParserTags + get() = TextParserTags(values().associate { it.name to it.type }) + + val RETURN_TO_TOP = "

    Back to Top

    " + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/parser_toc.kt b/src/main/kotlin/info/mechyrdia/lore/parser_toc.kt new file mode 100644 index 0000000..9ce1d59 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/parser_toc.kt @@ -0,0 +1,10 @@ +package info.mechyrdia.lore + +@JvmInline +value class TableOfContentsBuilder private constructor(private val links: MutableList) { + constructor() : this(mutableListOf()) + + fun add(text: String, toAnchor: String) = links.plusAssign(NavLink("#$toAnchor", text, aClasses = "left")) + + fun toNavBar(): List = links.toList() +} diff --git a/src/main/kotlin/info/mechyrdia/lore/tylan_language.kt b/src/main/kotlin/info/mechyrdia/lore/tylan_language.kt new file mode 100644 index 0000000..10c6fe7 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/tylan_language.kt @@ -0,0 +1,62 @@ +package info.mechyrdia.lore + +object TylanAlphabet { + private val allowedTranslitCharacters = setOf( + ' ', '\r', '\n', '\t', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', + '[', '{', '}', ']', '\\', '|', '/', '<', + '.', ',', ':', ';', '\'', '"', '?', '>', + ) + + private val replacements = listOf( + Regex("x") to "M", + Regex("y") to "N", + Regex("[qw-z]") to "", + + Regex("ch") to "C", + Regex("dh") to "D", + Regex("sh") to "S", + Regex("th") to "T", + Regex("ff") to "F", + Regex("fv") to "V", + Regex("hj") to "J", + Regex("lh") to "L", + Regex("ll") to "L", + Regex("hl") to "L", + Regex("rh") to "R", + Regex("rr") to "R", + Regex("hr") to "R", + Regex("d'h") to "dh", + Regex("l'h") to "lh", + Regex("l'J") to "lJ", + Regex("r'h") to "rh", + Regex("r'J") to "rJ", + Regex("s'h") to "sh", + Regex("t'h") to "th", + Regex("h'l") to "hl", + Regex("h'r") to "hr", + Regex("c(?!h)") to "", + + Regex("ae") to "W", + Regex("au") to "X", + Regex("ea") to "Y", + Regex("ei") to "Z", + Regex("eo") to "w", + Regex("eu") to "x", + Regex("oa") to "y", + Regex("ou") to "z", + Regex("oe") to "O", + Regex("ui") to "U", + + Regex("i([aeiouOUw-zW-Z])") to "ij$1", + Regex("^([aeiouOUw-zW-Z])") to "'$1", + Regex("([^'CDFJLR-TVbdf-hj-npr-tv])([aeiouOUw-zW-Z])") to "$1'$2", + Regex("([aeiouOUw-zW-Z])([aeiouOUw-zW-Z])") to "$1'$2", + ) + + fun tylanToFontAlphabet(tylan: String) = replacements.fold(tylan.lowercase().filter { it in allowedTranslitCharacters }) { partial, (regex, replacement) -> + partial.replace(regex, replacement) + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/view_bar.kt b/src/main/kotlin/info/mechyrdia/lore/view_bar.kt new file mode 100644 index 0000000..cb05709 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/view_bar.kt @@ -0,0 +1,20 @@ +package info.mechyrdia.lore + +import kotlinx.html.* + +abstract class Sidebar { + protected abstract fun TagConsumer<*>.display() + fun displayIn(aside: ASIDE) = aside.consumer.display() +} + +data class PageNavSidebar(val contents: List) : Sidebar() { + override fun TagConsumer<*>.display() { + div(classes = "list") { + for (it in contents) { + div(classes = "item") { + it.displayIn(this) + } + } + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/view_nav.kt b/src/main/kotlin/info/mechyrdia/lore/view_nav.kt new file mode 100644 index 0000000..7eb6846 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/view_nav.kt @@ -0,0 +1,42 @@ +package info.mechyrdia.lore + +import kotlinx.html.DIV +import kotlinx.html.a +import kotlinx.html.span +import kotlinx.html.style + +fun standardNavBar(path: List? = null) = listOf( + NavLink("/lore", "Lore Index") +) + path?.let { pathParts -> + pathParts.dropLast(1).mapIndexed { i, part -> + val subPath = pathParts.take(i + 1).joinToString("/") + NavLink("/lore/$subPath", part) + } +}.orEmpty() + listOf( + NavHead("Preferences"), + NavLink("/change-theme", "Light/Dark Mode"), + NavHead("External Links"), + NavLink("https://nationstates.net/mechyrdia", "On NationStates"), +) + +sealed class NavItem { + protected abstract fun DIV.display() + fun displayIn(div: DIV) = div.display() +} + +data class NavHead(val label: String) : NavItem() { + override fun DIV.display() { + span { + style = "font-variant:small-caps;text-decoration:underline" + +label + } + } +} + +data class NavLink(val to: String, val text: String, val aClasses: String? = null) : NavItem() { + override fun DIV.display() { + a(href = to, classes = aClasses) { + +text + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/view_tpl.kt b/src/main/kotlin/info/mechyrdia/lore/view_tpl.kt new file mode 100644 index 0000000..1572b8b --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/view_tpl.kt @@ -0,0 +1,83 @@ +package info.mechyrdia.lore + +import io.ktor.application.* +import kotlinx.html.* + +fun ApplicationCall.page(pageTitle: String? = null, navBar: List? = null, sidebar: Sidebar? = null, content: SECTIONS.() -> Unit): HTML.() -> Unit { + val theme = request.cookies["factbook-theme"] + + return { + when (theme) { + "light" -> "light" + "dark" -> "dark" + else -> null + }?.let { attributes["data-theme"] = it } + + head { + meta(charset = "utf-8") + meta(name = "viewport", content = "width=device-width, initial-scale=1.0") + + script(src = "/static/gltf-viewer/bower_components/webcomponentsjs/webcomponents-lite.js") {} + + link(rel = "icon", type = "image/svg+xml", href = "/static/images/icon.svg") + link(rel = "import", href = "/static/gltf-viewer/gltf-viewer.html") + + link(rel = "preconnect", href = "https://fonts.googleapis.com") + link(rel = "preconnect", href = "https://fonts.gstatic.com") { attributes["crossorigin"] = "anonymous" } + link(rel = "stylesheet", href = "https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&family=Jetbrains+Mono:wght@400;600;800&display=swap") + + link(rel = "stylesheet", href = "/static/style.css") + + title { + +(pageTitle ?: "Mechyrdiaverse Lorebase") + } + } + body { + div { id = "bg" } + + navBar?.let { nb -> + nav(classes = "desktop") { + div(classes = "list") { + for (ni in nb) { + div(classes = "item") { + ni.displayIn(this) + } + } + } + } + } + + sidebar?.let { + aside(classes = "desktop") { + it.displayIn(this) + } + } + + main { + sidebar?.let { + aside(classes = "mobile") { + it.displayIn(this) + } + } + + with(sectioned()) { + content() + } + + navBar?.let { nb -> + nav(classes = "mobile") { + div(classes = "list") { + for (ni in nb) { + div(classes = "item") { + ni.displayIn(this) + } + } + } + } + } + } + + script(src = "/static/init.js") {} + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/views_error.kt b/src/main/kotlin/info/mechyrdia/lore/views_error.kt new file mode 100644 index 0000000..9d295a6 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/views_error.kt @@ -0,0 +1,27 @@ +package info.mechyrdia.lore + +import io.ktor.application.* +import kotlinx.html.HTML +import kotlinx.html.h1 +import kotlinx.html.p + +fun ApplicationCall.error400(): HTML.() -> Unit = page("Bad Request", standardNavBar()) { + section { + h1 { +"Bad Request" } + p { +"The request your browser sent was improperly formatted." } + } +} + +fun ApplicationCall.error404(): HTML.() -> Unit = page("Not Found", standardNavBar()) { + section { + h1 { +"Not Found" } + p { +"Unfortunately, we could not find what you were looking for." } + } +} + +fun ApplicationCall.error503(): HTML.() -> Unit = page("Internal Error", standardNavBar()) { + section { + h1 { +"Internal Error" } + p { +"The servers made a bit of a mistake. Please be patient while we clean up our mess." } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/views_lore.kt b/src/main/kotlin/info/mechyrdia/lore/views_lore.kt new file mode 100644 index 0000000..e0ad344 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/views_lore.kt @@ -0,0 +1,43 @@ +package info.mechyrdia.lore + +import info.mechyrdia.Configuration +import io.ktor.application.* +import io.ktor.util.* +import kotlinx.html.* +import java.io.File + +fun ApplicationCall.loreArticlePage(): HTML.() -> Unit { + val pagePathParts = parameters.getAll("path")!! + val pagePath = pagePathParts.joinToString("/") + val pageFile = File(Configuration.CurrentConfiguration.articleDir).combineSafe(pagePath) + val pageNode = pageFile.toArticleNode() + + if (pageFile.isDirectory) { + val navbar = standardNavBar(pagePathParts.takeIf { it.isNotEmpty() }) + + return page("~/${pagePath}", navbar, null) { + section { + h1 { +"~/${pagePath}" } + ul { + pageNode.subNodes.renderInto(this, pagePath.takeIf { it.isNotEmpty() }) + } + } + } + } else { + val pageMarkup = pageFile.readText() + val pageHtml = TextParserState.parseText(pageMarkup, TextParserFormattingTag.asTags, Unit) + + val pageToC = TableOfContentsBuilder() + TextParserState.parseText(pageMarkup, TextParserToCBuilderTag.asTags, pageToC) + + val navbar = standardNavBar(pagePathParts) + val sidebar = PageNavSidebar(pageToC.toNavBar()) + + return page("~/${pagePath}", navbar, sidebar) { + section { + a { id = "page-top" } + unsafe { raw(pageHtml) } + } + } + } +} diff --git a/src/main/kotlin/info/mechyrdia/lore/views_prefs.kt b/src/main/kotlin/info/mechyrdia/lore/views_prefs.kt new file mode 100644 index 0000000..26f1a42 --- /dev/null +++ b/src/main/kotlin/info/mechyrdia/lore/views_prefs.kt @@ -0,0 +1,56 @@ +package info.mechyrdia.lore + +import io.ktor.application.* +import kotlinx.html.* + +fun ApplicationCall.changeThemePage(): HTML.() -> Unit { + val theme = when (request.cookies["factbook-theme"]) { + "light" -> "light" + "dark" -> "dark" + else -> null + } + + return page("/etc/prefs", standardNavBar(), null) { + section { + h1 { +"Client Preferences" } + form(action = "/change-theme", method = FormMethod.post) { + label { + radioInput(name = "theme") { + id = "system-theme" + value = "system" + required = true + checked = theme == null + } + +Entities.nbsp + +"System Choice" + } + br + label { + radioInput(name = "theme") { + id = "light-theme" + value = "light" + required = true + checked = theme == "light" + } + +Entities.nbsp + +"Light Theme" + } + br + label { + radioInput(name = "theme") { + id = "dark-theme" + value = "dark" + required = true + checked = theme == "dark" + } + +Entities.nbsp + +"Dark Theme" + } + br + submitInput { + value = "Accept Changes" + } + } + } + } +} diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..64e2290 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,25 @@ + + + + logs/server.log + + logs/server.%d{yyyy-MM-dd}.log + + + + UTF-8 + %d{yyyy-MM-dd/HH:mm:ss.SSS} [%thread] %.-1level \(%logger\) - %msg%n + + + + + + %d{yyyy-MM-dd/HH:mm:ss.SSS} [%thread] %.-1level \(%logger\) - %msg%n + + + + + + + + diff --git a/src/main/resources/static/font/tylan-language-alphabet-3.woff b/src/main/resources/static/font/tylan-language-alphabet-3.woff new file mode 100644 index 0000000000000000000000000000000000000000..9bf8657d94def9b75fe53a755cdb6f75dfd8a5f3 GIT binary patch literal 4296 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 h!^quvJ&Z + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/custom-style.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/custom-style.html new file mode 100644 index 0000000..8aae908 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/custom-style.html @@ -0,0 +1,73 @@ + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-bind.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-bind.html new file mode 100644 index 0000000..436791d --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-bind.html @@ -0,0 +1,121 @@ + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-if.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-if.html new file mode 100644 index 0000000..842e5a6 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-if.html @@ -0,0 +1,265 @@ + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html new file mode 100644 index 0000000..99edb7f --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-module.html @@ -0,0 +1,134 @@ + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-repeat.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-repeat.html new file mode 100644 index 0000000..6969014 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/elements/dom-repeat.html @@ -0,0 +1,687 @@ + + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/class.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/class.html new file mode 100644 index 0000000..a63c6a1 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/class.html @@ -0,0 +1,334 @@ + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/legacy-element-mixin.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/legacy-element-mixin.html new file mode 100644 index 0000000..e831d6c --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/legacy-element-mixin.html @@ -0,0 +1,917 @@ + + + + + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/mutable-data-behavior.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/mutable-data-behavior.html new file mode 100644 index 0000000..7a1d529 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/mutable-data-behavior.html @@ -0,0 +1,150 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer-fn.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer-fn.html new file mode 100644 index 0000000..1a145c9 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer-fn.html @@ -0,0 +1,48 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer.dom.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer.dom.html new file mode 100644 index 0000000..ae9ba4b --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/polymer.dom.html @@ -0,0 +1,336 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/templatizer-behavior.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/templatizer-behavior.html new file mode 100644 index 0000000..4f3a14a --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/legacy/templatizer-behavior.html @@ -0,0 +1,136 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html new file mode 100644 index 0000000..92b728d --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/element-mixin.html @@ -0,0 +1,929 @@ + + + + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/gesture-event-listeners.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/gesture-event-listeners.html new file mode 100644 index 0000000..dcf163d --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/gesture-event-listeners.html @@ -0,0 +1,61 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/mutable-data.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/mutable-data.html new file mode 100644 index 0000000..9cb6493 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/mutable-data.html @@ -0,0 +1,194 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html new file mode 100644 index 0000000..a586f31 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-accessors.html @@ -0,0 +1,576 @@ + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html new file mode 100644 index 0000000..5be94f0 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/property-effects.html @@ -0,0 +1,2384 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html new file mode 100644 index 0000000..af17ee3 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/mixins/template-stamp.html @@ -0,0 +1,477 @@ + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/array-splice.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/array-splice.html new file mode 100644 index 0000000..9008ebf --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/array-splice.html @@ -0,0 +1,321 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/async.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/async.html new file mode 100644 index 0000000..19293dd --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/async.html @@ -0,0 +1,203 @@ + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/boot.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/boot.html new file mode 100644 index 0000000..aefae13 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/boot.html @@ -0,0 +1,60 @@ + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html new file mode 100644 index 0000000..b1b44cd --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/case-map.html @@ -0,0 +1,64 @@ + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/debounce.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/debounce.html new file mode 100644 index 0000000..dc8f66a --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/debounce.html @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flattened-nodes-observer.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flattened-nodes-observer.html new file mode 100644 index 0000000..c1f75d0 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flattened-nodes-observer.html @@ -0,0 +1,242 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flush.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flush.html new file mode 100644 index 0000000..0e3384b --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/flush.html @@ -0,0 +1,60 @@ + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/gestures.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/gestures.html new file mode 100644 index 0000000..4ee65c3 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/gestures.html @@ -0,0 +1,853 @@ + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/import-href.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/import-href.html new file mode 100644 index 0000000..77933a4 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/import-href.html @@ -0,0 +1,107 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html new file mode 100644 index 0000000..12a4ebb --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/mixin.html @@ -0,0 +1,76 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/path.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/path.html new file mode 100644 index 0000000..2dfe894 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/path.html @@ -0,0 +1,274 @@ + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/render-status.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/render-status.html new file mode 100644 index 0000000..ca7175a --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/render-status.html @@ -0,0 +1,130 @@ + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html new file mode 100644 index 0000000..7bffd13 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/resolve-url.html @@ -0,0 +1,108 @@ + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html new file mode 100644 index 0000000..e18a347 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/style-gather.html @@ -0,0 +1,146 @@ + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/templatize.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/templatize.html new file mode 100644 index 0000000..456c015 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/templatize.html @@ -0,0 +1,473 @@ + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/unresolved.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/unresolved.html new file mode 100644 index 0000000..6c8752a --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/lib/utils/unresolved.html @@ -0,0 +1,31 @@ + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/polymer-element.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/polymer-element.html new file mode 100644 index 0000000..1dac595 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/polymer-element.html @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/gltf-viewer/bower_components/polymer/polymer.html b/src/main/resources/static/gltf-viewer/bower_components/polymer/polymer.html new file mode 100644 index 0000000..0331373 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/polymer/polymer.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.html b/src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.html new file mode 100644 index 0000000..d344ec3 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.html @@ -0,0 +1,10 @@ + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.min.js b/src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.min.js new file mode 100644 index 0000000..7fec2ff --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/shadycss/apply-shim.min.js @@ -0,0 +1,29 @@ +(function(){ +/* + +Copyright (c) 2017 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ +'use strict';var l={};function m(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""} +function p(a){a=a.replace(aa,"").replace(ba,"");var b=q,c=a,d=new m;d.start=0;d.end=c.length;for(var e=d,f=0,h=c.length;f *")}; +function pa(a,b){b=b.replace(B,function(b,d,e,f){return qa(a,b,d,e,f)});return O(a,b)}function O(a,b){for(var c;c=C.exec(b);){var d=c[0],e=c[1];c=c.index;var f=b.slice(0,c+d.indexOf("@apply"));b=b.slice(c+d.length);var h=P(a,f),g,k,d=void 0;g=a;var e=e.replace(na,""),n=[];k=g.a.get(e);k||(g.a.set(e,{}),k=g.a.get(e));if(k)for(d in g.c&&(k.i[g.c]=!0),k.h)g=h&&h[d],k=[d,": var(",e,"_-_",d],g&&k.push(",",g),k.push(")"),n.push(k.join(""));d=n.join("; ");b=""+f+d+b;C.lastIndex=c+d.length}return b} +function P(a,b){b=b.split(";");for(var c,d,e={},f=0,h;f}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = node['parsedSelector'] = node['selector'] = t.trim();\n node['atRule'] = (s.indexOf(AT_START) === 0);\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] =\n node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties ? node['cssText'] :\n removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText\n .replace(RX.customProp, '')\n .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText\n .replace(RX.mixinApply, '')\n .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map'\nimport {StyleNode} from './css-parse' // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n let template = templateMap[elementName];\n if (template) {\n invalidateTemplate(template);\n }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n // default the current version to 0\n template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n // ensure the \"validating for\" flag exists\n template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n // increment the next version\n template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValid(template);\n }\n return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValidating(template);\n }\n return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n let template = templateMap[elementName];\n startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n // remember that the current \"next version\" is the reason for this validation cycle\n template[VALIDATING_VERSION] = template[NEXT_VERSION];\n // however, there only needs to be one async task to clear the counters\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n // sync the current version to let future invalidations cause a refresh cycle\n template[CURRENT_VERSION] = template[NEXT_VERSION];\n template._validating = false;\n });\n }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n for (let elementName in templateMap) {\n let template = templateMap[elementName];\n if (!templateIsValid(template)) {\n return true;\n }\n }\n return false;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\\s}])|$)/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media[^(]*(\\([^)]*\\))/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport let nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\n// chrome 49 has semi-working css vars, check if box-shadow works\n// safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\nexport let nativeCssVariables = (!navigator.userAgent.match('AppleWebKit/601') &&\nwindow.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n\n/**\n * @param {ShadyCSSOptions | ShadyCSSInterface | undefined} settings\n */\nfunction parseSettings(settings) {\n if (settings) {\n nativeCssVariables = nativeCssVariables && !settings['nativeCss'] && !settings['shimcssproperties'];\n nativeShadow = nativeShadow && !settings['nativeShadow'] && !settings['shimshadow'];\n }\n}\n\nif (window.ShadyCSS) {\n parseSettings(window.ShadyCSS);\n} else if (window['WebComponents']) {\n parseSettings(window['WebComponents']['flags']);\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings'\nimport {parse, stringify, types, StyleNode} from './css-parse' // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n/*\n * The apply shim simulates the behavior of `@apply` proposed at\n * https://tabatkins.github.io/specs/css-apply-rule/.\n * The approach is to convert a property like this:\n *\n * --foo: {color: red; background: blue;}\n *\n * to this:\n *\n * --foo_-_color: red;\n * --foo_-_background: blue;\n *\n * Then where `@apply --foo` is used, that is converted to:\n *\n * color: var(--foo_-_color);\n * background: var(--foo_-_background);\n *\n * This approach generally works but there are some issues and limitations.\n * Consider, for example, that somewhere *between* where `--foo` is set and used,\n * another element sets it to:\n *\n * --foo: { border: 2px solid red; }\n *\n * We must now ensure that the color and background from the previous setting\n * do not apply. This is accomplished by changing the property set to this:\n *\n * --foo_-_border: 2px solid red;\n * --foo_-_color: initial;\n * --foo_-_background: initial;\n *\n * This works but introduces one new issue.\n * Consider this setup at the point where the `@apply` is used:\n *\n * background: orange;\n * `@apply` --foo;\n *\n * In this case the background will be unset (initial) rather than the desired\n * `orange`. We address this by altering the property set to use a fallback\n * value like this:\n *\n * color: var(--foo_-_color);\n * background: var(--foo_-_background, orange);\n * border: var(--foo_-_border);\n *\n * Note that the default is retained in the property set and the `background` is\n * the desired `orange`. This leads us to a limitation.\n *\n * Limitation 1:\n\n * Only properties in the rule where the `@apply`\n * is used are considered as default values.\n * If another rule matches the element and sets `background` with\n * less specificity than the rule in which `@apply` appears,\n * the `background` will not be set.\n *\n * Limitation 2:\n *\n * When using Polymer's `updateStyles` api, new properties may not be set for\n * `@apply` properties.\n\n*/\n\n'use strict';\n\nimport {forEachRule, processVariableAndFallback, rulesForStyle, toCssText} from './style-util'\nimport {MIXIN_MATCH, VAR_ASSIGN} from './common-regex'\nimport {StyleNode} from './css-parse' // eslint-disable-line no-unused-vars\n\nconst APPLY_NAME_CLEAN = /;\\s*/m;\nconst INITIAL_INHERIT = /^\\s*(initial)|(inherit)\\s*$/;\n\n// separator used between mixin-name and mixin-property-name when producing properties\n// NOTE: plain '-' may cause collisions in user styles\nconst MIXIN_VAR_SEP = '_-_';\n\n/**\n * @typedef {!Object}\n */\nlet PropertyEntry; // eslint-disable-line no-unused-vars\n\n/**\n * @typedef {!Object}\n */\nlet DependantsEntry; // eslint-disable-line no-unused-vars\n\n/** @typedef {{\n * properties: PropertyEntry,\n * dependants: DependantsEntry\n * }}\n */\nlet MixinMapEntry; // eslint-disable-line no-unused-vars\n\n// map of mixin to property names\n// --foo: {border: 2px} -> {properties: {(--foo, ['border'])}, dependants: {'element-name': proto}}\nclass MixinMap {\n constructor() {\n /** @type {!Object} */\n this._map = {};\n }\n /**\n * @param {string} name\n * @param {!PropertyEntry} props\n */\n set(name, props) {\n name = name.trim();\n this._map[name] = {\n properties: props,\n dependants: {}\n }\n }\n /**\n * @param {string} name\n * @return {MixinMapEntry}\n */\n get(name) {\n name = name.trim();\n return this._map[name] || null;\n }\n}\n\n/**\n * Callback for when an element is marked invalid\n * @type {?function(string)}\n */\nlet invalidCallback = null;\n\n/** @unrestricted */\nclass ApplyShim {\n constructor() {\n /** @type {?string} */\n this._currentElement = null;\n /** @type {HTMLMetaElement} */\n this._measureElement = null;\n this._map = new MixinMap();\n }\n /**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\n detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n }\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @return {StyleNode}\n */\n transformTemplate(template, elementName) {\n const style = /** @type {HTMLStyleElement} */(template.content.querySelector('style'));\n /** @type {StyleNode} */\n let ast = null;\n if (style) {\n ast = this.transformStyle(style, elementName);\n }\n return ast;\n }\n /**\n * @param {!HTMLStyleElement} style\n * @param {string} elementName\n * @return {StyleNode}\n */\n transformStyle(style, elementName = '') {\n let ast = rulesForStyle(style);\n this.transformRules(ast, elementName);\n style.textContent = toCssText(ast);\n return ast;\n }\n /**\n * @param {!HTMLStyleElement} style\n * @return {StyleNode}\n */\n transformCustomStyle(style) {\n let ast = rulesForStyle(style);\n forEachRule(ast, (rule) => {\n if (rule['selector'] === ':root') {\n rule['selector'] = 'html';\n }\n this.transformRule(rule);\n })\n style.textContent = toCssText(ast);\n return ast;\n }\n /**\n * @param {StyleNode} rules\n * @param {string} elementName\n */\n transformRules(rules, elementName) {\n this._currentElement = elementName;\n forEachRule(rules, (r) => {\n this.transformRule(r);\n });\n this._currentElement = null;\n }\n /**\n * @param {!StyleNode} rule\n */\n transformRule(rule) {\n rule['cssText'] = this.transformCssText(rule['parsedCssText']);\n // :root was only used for variable assignment in property shim,\n // but generates invalid selectors with real properties.\n // replace with `:host > *`, which serves the same effect\n if (rule['selector'] === ':root') {\n rule['selector'] = ':host > *';\n }\n }\n /**\n * @param {string} cssText\n * @return {string}\n */\n transformCssText(cssText) {\n // produce variables\n cssText = cssText.replace(VAR_ASSIGN, (matchText, propertyName, valueProperty, valueMixin) =>\n this._produceCssProperties(matchText, propertyName, valueProperty, valueMixin));\n // consume mixins\n return this._consumeCssProperties(cssText);\n }\n /**\n * @param {string} property\n * @return {string}\n */\n _getInitialValueForProperty(property) {\n if (!this._measureElement) {\n this._measureElement = /** @type {HTMLMetaElement} */(document.createElement('meta'));\n this._measureElement.setAttribute('apply-shim-measure', '');\n this._measureElement.style.all = 'initial';\n document.head.appendChild(this._measureElement);\n }\n return window.getComputedStyle(this._measureElement).getPropertyValue(property);\n }\n /**\n * replace mixin consumption with variable consumption\n * @param {string} text\n * @return {string}\n */\n _consumeCssProperties(text) {\n /** @type {Array} */\n let m = null;\n // loop over text until all mixins with defintions have been applied\n while((m = MIXIN_MATCH.exec(text))) {\n let matchText = m[0];\n let mixinName = m[1];\n let idx = m.index;\n // collect properties before apply to be \"defaults\" if mixin might override them\n // match includes a \"prefix\", so find the start and end positions of @apply\n let applyPos = idx + matchText.indexOf('@apply');\n let afterApplyPos = idx + matchText.length;\n // find props defined before this @apply\n let textBeforeApply = text.slice(0, applyPos);\n let textAfterApply = text.slice(afterApplyPos);\n let defaults = this._cssTextToMap(textBeforeApply);\n let replacement = this._atApplyToCssProperties(mixinName, defaults);\n // use regex match position to replace mixin, keep linear processing time\n text = `${textBeforeApply}${replacement}${textAfterApply}`;\n // move regex search to _after_ replacement\n MIXIN_MATCH.lastIndex = idx + replacement.length;\n }\n return text;\n }\n /**\n * produce variable consumption at the site of mixin consumption\n * `@apply` --foo; -> for all props (${propname}: var(--foo_-_${propname}, ${fallback[propname]}}))\n * Example:\n * border: var(--foo_-_border); padding: var(--foo_-_padding, 2px)\n *\n * @param {string} mixinName\n * @param {Object} fallbacks\n * @return {string}\n */\n _atApplyToCssProperties(mixinName, fallbacks) {\n mixinName = mixinName.replace(APPLY_NAME_CLEAN, '');\n let vars = [];\n let mixinEntry = this._map.get(mixinName);\n // if we depend on a mixin before it is created\n // make a sentinel entry in the map to add this element as a dependency for when it is defined.\n if (!mixinEntry) {\n this._map.set(mixinName, {});\n mixinEntry = this._map.get(mixinName);\n }\n if (mixinEntry) {\n if (this._currentElement) {\n mixinEntry.dependants[this._currentElement] = true;\n }\n let p, parts, f;\n for (p in mixinEntry.properties) {\n f = fallbacks && fallbacks[p];\n parts = [p, ': var(', mixinName, MIXIN_VAR_SEP, p];\n if (f) {\n parts.push(',', f);\n }\n parts.push(')');\n vars.push(parts.join(''));\n }\n }\n return vars.join('; ');\n }\n\n /**\n * @param {string} property\n * @param {string} value\n * @return {string}\n */\n _replaceInitialOrInherit(property, value) {\n let match = INITIAL_INHERIT.exec(value);\n if (match) {\n if (match[1]) {\n // initial\n // replace `initial` with the concrete initial value for this property\n value = this._getInitialValueForProperty(property);\n } else {\n // inherit\n // with this purposfully illegal value, the variable will be invalid at\n // compute time (https://www.w3.org/TR/css-variables/#invalid-at-computed-value-time)\n // and for inheriting values, will behave similarly\n // we cannot support the same behavior for non inheriting values like 'border'\n value = 'apply-shim-inherit';\n }\n }\n return value;\n }\n\n /**\n * \"parse\" a mixin definition into a map of properties and values\n * cssTextToMap('border: 2px solid black') -> ('border', '2px solid black')\n * @param {string} text\n * @return {!Object}\n */\n _cssTextToMap(text) {\n let props = text.split(';');\n let property, value;\n let out = {};\n for (let i = 0, p, sp; i < props.length; i++) {\n p = props[i];\n if (p) {\n sp = p.split(':');\n // ignore lines that aren't definitions like @media\n if (sp.length > 1) {\n property = sp[0].trim();\n // some properties may have ':' in the value, like data urls\n value = this._replaceInitialOrInherit(property, sp.slice(1).join(':'));\n out[property] = value;\n }\n }\n }\n return out;\n }\n\n /**\n * @param {MixinMapEntry} mixinEntry\n */\n _invalidateMixinEntry(mixinEntry) {\n if (!invalidCallback) {\n return;\n }\n for (let elementName in mixinEntry.dependants) {\n if (elementName !== this._currentElement) {\n invalidCallback(elementName);\n }\n }\n }\n\n /**\n * @param {string} matchText\n * @param {string} propertyName\n * @param {?string} valueProperty\n * @param {?string} valueMixin\n * @return {string}\n */\n _produceCssProperties(matchText, propertyName, valueProperty, valueMixin) {\n // handle case where property value is a mixin\n if (valueProperty) {\n // form: --mixin2: var(--mixin1), where --mixin1 is in the map\n processVariableAndFallback(valueProperty, (prefix, value) => {\n if (value && this._map.get(value)) {\n valueMixin = `@apply ${value};`\n }\n });\n }\n if (!valueMixin) {\n return matchText;\n }\n let mixinAsProperties = this._consumeCssProperties(valueMixin);\n let prefix = matchText.slice(0, matchText.indexOf('--'));\n let mixinValues = this._cssTextToMap(mixinAsProperties);\n let combinedProps = mixinValues;\n let mixinEntry = this._map.get(propertyName);\n let oldProps = mixinEntry && mixinEntry.properties;\n if (oldProps) {\n // NOTE: since we use mixin, the map of properties is updated here\n // and this is what we want.\n combinedProps = Object.assign(Object.create(oldProps), mixinValues);\n } else {\n this._map.set(propertyName, combinedProps);\n }\n let out = [];\n let p, v;\n // set variables defined by current mixin\n let needToInvalidate = false;\n for (p in combinedProps) {\n v = mixinValues[p];\n // if property not defined by current mixin, set initial\n if (v === undefined) {\n v = 'initial';\n }\n if (oldProps && !(p in oldProps)) {\n needToInvalidate = true;\n }\n out.push(`${propertyName}${MIXIN_VAR_SEP}${p}: ${v}`);\n }\n if (needToInvalidate) {\n this._invalidateMixinEntry(mixinEntry);\n }\n if (mixinEntry) {\n mixinEntry.properties = combinedProps;\n }\n // because the mixinMap is global, the mixin might conflict with\n // a different scope's simple variable definition:\n // Example:\n // some style somewhere:\n // --mixin1:{ ... }\n // --mixin2: var(--mixin1);\n // some other element:\n // --mixin1: 10px solid red;\n // --foo: var(--mixin1);\n // In this case, we leave the original variable definition in place.\n if (valueProperty) {\n prefix = `${matchText};${prefix}`;\n }\n return `${prefix}${out.join('; ')};`;\n }\n}\n\n/* exports */\nApplyShim.prototype['detectMixin'] = ApplyShim.prototype.detectMixin;\nApplyShim.prototype['transformStyle'] = ApplyShim.prototype.transformStyle;\nApplyShim.prototype['transformCustomStyle'] = ApplyShim.prototype.transformCustomStyle;\nApplyShim.prototype['transformRules'] = ApplyShim.prototype.transformRules;\nApplyShim.prototype['transformRule'] = ApplyShim.prototype.transformRule;\nApplyShim.prototype['transformTemplate'] = ApplyShim.prototype.transformTemplate;\nApplyShim.prototype['_separator'] = MIXIN_VAR_SEP;\nObject.defineProperty(ApplyShim.prototype, 'invalidCallback', {\n /** @return {?function(string)} */\n get() {\n return invalidCallback;\n },\n /** @param {?function(string)} cb */\n set(cb) {\n invalidCallback = cb;\n }\n});\n\nexport default ApplyShim;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {Promise} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n requestAnimationFrame(function() {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\n }\n });\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ApplyShim from '../src/apply-shim'\nimport templateMap from '../src/template-map'\nimport {getIsExtends, toCssText} from '../src/style-util'\nimport * as ApplyShimUtils from '../src/apply-shim-utils'\nimport documentWait from '../src/document-wait'\nimport {getComputedStyleValue, updateNativeProperties} from '../src/common-utils'\nimport {CustomStyleInterfaceInterface} from '../src/custom-style-interface' // eslint-disable-line no-unused-vars\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings'\n\n/** @const {ApplyShim} */\nconst applyShim = new ApplyShim();\n\nclass ApplyShimInterface {\n constructor() {\n /** @type {?CustomStyleInterfaceInterface} */\n this.customStyleInterface = null;\n this.booted = false;\n documentWait(() => {\n this.ensure();\n });\n applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n ensure() {\n if (this.booted) {\n return;\n }\n this.customStyleInterface = window.ShadyCSS.CustomStyleInterface;\n if (this.customStyleInterface) {\n this.customStyleInterface['transformCallback'] = (style) => {\n applyShim.transformCustomStyle(style);\n };\n this.customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this.customStyleInterface['enqueued']) {\n this.flushCustomStyles();\n }\n });\n }\n }\n this.booted = true;\n }\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n */\n prepareTemplate(template, elementName) {\n this.ensure();\n templateMap[elementName] = template;\n let ast = applyShim.transformTemplate(template, elementName);\n // save original style ast to use for revalidating instances\n template['_styleAst'] = ast;\n }\n flushCustomStyles() {\n this.ensure();\n if (!this.customStyleInterface) {\n return;\n }\n let styles = this.customStyleInterface['processStyles']();\n if (!this.customStyleInterface['enqueued']) {\n return;\n }\n for (let i = 0; i < styles.length; i++ ) {\n let cs = styles[i];\n let style = this.customStyleInterface['getStyleForCustomStyle'](cs);\n if (style) {\n applyShim.transformCustomStyle(style);\n }\n }\n this.customStyleInterface['enqueued'] = false;\n }\n /**\n * @param {HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n this.ensure();\n if (properties) {\n updateNativeProperties(element, properties);\n }\n if (element.shadowRoot) {\n this.styleElement(element);\n let shadowChildren = element.shadowRoot.children || element.shadowRoot.childNodes;\n for (let i = 0; i < shadowChildren.length; i++) {\n this.styleSubtree(/** @type {HTMLElement} */(shadowChildren[i]));\n }\n } else {\n let children = element.children || element.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.styleSubtree(/** @type {HTMLElement} */(children[i]));\n }\n }\n }\n /**\n * @param {HTMLElement} element\n */\n styleElement(element) {\n this.ensure();\n let {is} = getIsExtends(element);\n let template = templateMap[is];\n if (template && !ApplyShimUtils.templateIsValid(template)) {\n // only revalidate template once\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this.prepareTemplate(template, is);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update this element instance\n let root = element.shadowRoot;\n if (root) {\n let style = /** @type {HTMLStyleElement} */(root.querySelector('style'));\n if (style) {\n // reuse the template's style ast, it has all the original css text\n style['__cssRules'] = template['_styleAst'];\n style.textContent = toCssText(template['_styleAst'])\n }\n }\n }\n }\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.ensure();\n this.styleSubtree(document.body, properties);\n }\n}\n\nif (!window.ShadyCSS || !window.ShadyCSS.ScopingShim) {\n const applyShimInterface = new ApplyShimInterface();\n let CustomStyleInterface = window.ShadyCSS && window.ShadyCSS.CustomStyleInterface;\n\n window.ShadyCSS = {\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) { // eslint-disable-line no-unused-vars\n applyShimInterface.flushCustomStyles();\n applyShimInterface.prepareTemplate(template, elementName)\n },\n\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n applyShimInterface.flushCustomStyles();\n applyShimInterface.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n applyShimInterface.flushCustomStyles();\n applyShimInterface.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n applyShimInterface.flushCustomStyles();\n applyShimInterface.styleDocument(properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return getComputedStyleValue(element, property);\n },\n nativeCss: nativeCssVariables,\n nativeShadow: nativeShadow\n };\n\n if (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n }\n}\n\nwindow.ShadyCSS.ApplyShim = applyShim;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}"]} \ No newline at end of file diff --git a/src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.html b/src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.html new file mode 100644 index 0000000..a3919fa --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.html @@ -0,0 +1,10 @@ + + diff --git a/src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.min.js b/src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.min.js new file mode 100644 index 0000000..4347aa9 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/bower_components/shadycss/custom-style-interface.min.js @@ -0,0 +1,16 @@ +(function(){ +/* + +Copyright (c) 2017 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ +'use strict';var c=!(window.ShadyDOM&&window.ShadyDOM.inUse),f=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)");function g(a){a&&(f=f&&!a.nativeCss&&!a.shimcssproperties,c=c&&!a.nativeShadow&&!a.shimshadow)}window.ShadyCSS?g(window.ShadyCSS):window.WebComponents&&g(window.WebComponents.flags);var h=c,k=f;function l(a,b){for(var d in b)null===d?a.style.removeProperty(d):a.style.setProperty(d,b[d])};var m=null,n=window.HTMLImports&&window.HTMLImports.whenReady||null,r;function t(){var a=u;requestAnimationFrame(function(){n?n(a):(m||(m=new Promise(function(a){r=a}),"complete"===document.readyState?r():document.addEventListener("readystatechange",function(){"complete"===document.readyState&&r()})),m.then(function(){a&&a()}))})};var v=null,u=null;function x(){this.customStyles=[];this.enqueued=!1}function y(a){!a.enqueued&&u&&(a.enqueued=!0,t())}x.prototype.c=function(a){a.__seenByShadyCSS||(a.__seenByShadyCSS=!0,this.customStyles.push(a),y(this))};x.prototype.b=function(a){if(a.__shadyCSSCachedStyle)return a.__shadyCSSCachedStyle;var b;a.getStyle?b=a.getStyle():b=a;return b}; +x.prototype.a=function(){for(var a=this.customStyles,b=0;b} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n requestAnimationFrame(function() {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\n }\n });\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport documentWait from './document-wait'\n\n/**\n * @typedef {HTMLStyleElement | {getStyle: function():HTMLStyleElement}}\n */\nexport let CustomStyleProvider;\n\nconst SEEN_MARKER = '__seenByShadyCSS';\nconst CACHED_STYLE = '__shadyCSSCachedStyle';\n\n/** @type {?function(!HTMLStyleElement)} */\nlet transformFn = null;\n\n/** @type {?function()} */\nlet validateFn = null;\n\n/**\nThis interface is provided to add document-level + + + + + diff --git a/src/main/resources/static/gltf-viewer/js/OrbitControls.js b/src/main/resources/static/gltf-viewer/js/OrbitControls.js new file mode 100644 index 0000000..151f0c8 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/js/OrbitControls.js @@ -0,0 +1,1042 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// 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 arrow keys / touch: three finger swipe + +THREE.OrbitControls = function ( object, domElement ) { + + this.object = object; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // 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, must be a sub-interval of the interval [ - Math.PI, Math.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.25; + + // 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.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 round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + 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().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + 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() ); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, 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 + 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 ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + } + + scale = 1; + panOffset.set( 0, 0, 0 ); + + // 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, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //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_DOLLY: 4, TOUCH_PAN: 5 }; + + 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 ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix + 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 === document ? scope.domElement.body : scope.domElement; + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + // 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 actually don't use screenWidth, since perspective camera is fixed to screen height + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + // 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 dollyIn( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + 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 dollyOut( dollyScale ) { + + if ( scope.object instanceof THREE.PerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object instanceof THREE.OrthographicCamera ) { + + 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 ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + //console.log( 'handleKeyDown' ); + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + scope.update(); + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDolly( event ) { + + //console.log( 'handleTouchStartDolly' ); + + 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 handleTouchStartPan( event ) { + + //console.log( 'handleTouchStartPan' ); + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDolly( event ) { + + //console.log( 'handleTouchMoveDolly' ); + + 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.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyIn( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleTouchMovePan( event ) { + + //console.log( 'handleTouchMovePan' ); + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.button ) { + + case scope.mouseButtons.ORBIT: + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + break; + + case scope.mouseButtons.ZOOM: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + 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 ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + 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(); + + handleMouseWheel( event ); + + scope.dispatchEvent( startEvent ); // not sure why these are here... + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + + handleTouchStartDolly( event ); + + state = STATE.TOUCH_DOLLY; + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?... + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?... + + handleTouchMoveDolly( event ); + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_PAN ) return; // is this needed?... + + handleTouchMovePan( event ); + + 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, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties( THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); diff --git a/src/main/resources/static/gltf-viewer/js/three-examples.js b/src/main/resources/static/gltf-viewer/js/three-examples.js new file mode 100644 index 0000000..7892ef1 --- /dev/null +++ b/src/main/resources/static/gltf-viewer/js/three-examples.js @@ -0,0 +1,1452 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= 0) ? line.substring(0, pos) : line; + key = key.toLowerCase(); + + let value = (pos >= 0) ? line.substring(pos + 1) : ''; + value = value.trim(); + + if (key === 'newmtl') { + + // New material + + info = {name: value}; + materialsInfo[value] = info; + + } else { + + if (key === 'ka' || key === 'kd' || key === 'ks' || key === 'ke') { + + const ss = value.split(delimiter_pattern, 3); + info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])]; + + } else { + + info[key] = value; + + } + + } + + } + + const materialCreator = new MaterialCreator(this.resourcePath || path, this.materialOptions); + materialCreator.setCrossOrigin(this.crossOrigin); + materialCreator.setManager(this.manager); + materialCreator.setMaterials(materialsInfo); + return materialCreator; + + } + +} + +/** + * Create a new MTLLoader.MaterialCreator + * @param baseUrl - Url relative to which textures are loaded + * @param options - Set of options on how to construct the materials + * side: Which side to apply the material + * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide + * wrap: What type of wrapping to apply for textures + * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping + * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 + * Default: false, assumed to be already normalized + * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's + * Default: false + * @constructor + */ + +class MaterialCreator { + + constructor(baseUrl = '', options = {}) { + + this.baseUrl = baseUrl; + this.options = options; + this.materialsInfo = {}; + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + this.crossOrigin = 'anonymous'; + + this.side = (this.options.side !== undefined) ? this.options.side : THREE.FrontSide; + this.wrap = (this.options.wrap !== undefined) ? this.options.wrap : THREE.RepeatWrapping; + + } + + setCrossOrigin(value) { + + this.crossOrigin = value; + return this; + + } + + setManager(value) { + + this.manager = value; + + } + + setMaterials(materialsInfo) { + + this.materialsInfo = this.convert(materialsInfo); + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + } + + convert(materialsInfo) { + + if (!this.options) return materialsInfo; + + const converted = {}; + + for (const mn in materialsInfo) { + + // Convert materials info into normalized form based on options + + const mat = materialsInfo[mn]; + + const covmat = {}; + + converted[mn] = covmat; + + for (const prop in mat) { + + let save = true; + let value = mat[prop]; + const lprop = prop.toLowerCase(); + + switch (lprop) { + + case 'kd': + case 'ka': + case 'ks': + + // Diffuse color (color under white light) using RGB values + + if (this.options && this.options.normalizeRGB) { + + value = [value[0] / 255, value[1] / 255, value[2] / 255]; + + } + + if (this.options && this.options.ignoreZeroRGBs) { + + if (value[0] === 0 && value[1] === 0 && value[2] === 0) { + + // ignore + + save = false; + + } + + } + + break; + + default: + + break; + + } + + if (save) { + + covmat[lprop] = value; + + } + + } + + } + + return converted; + + } + + preload() { + + for (const mn in this.materialsInfo) { + + this.create(mn); + + } + + } + + getIndex(materialName) { + + return this.nameLookup[materialName]; + + } + + getAsArray() { + + let index = 0; + + for (const mn in this.materialsInfo) { + + this.materialsArray[index] = this.create(mn); + this.nameLookup[mn] = index; + index++; + + } + + return this.materialsArray; + + } + + create(materialName) { + + if (this.materials[materialName] === undefined) { + + this.createMaterial_(materialName); + + } + + return this.materials[materialName]; + + } + + createMaterial_(materialName) { + + // Create material + + const scope = this; + const mat = this.materialsInfo[materialName]; + const params = { + + name: materialName, + side: this.side + + }; + + function resolveURL(baseUrl, url) { + + if (typeof url !== 'string' || url === '') + return ''; + + // Absolute URL + if (/^https?:\/\//i.test(url)) return url; + + return baseUrl + url; + + } + + function setMapForType(mapType, value) { + + if (params[mapType]) return; // Keep the first encountered texture + + const texParams = scope.getTextureParams(value, params); + const map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url)); + + map.repeat.copy(texParams.scale); + map.offset.copy(texParams.offset); + + map.wrapS = scope.wrap; + map.wrapT = scope.wrap; + + params[mapType] = map; + + } + + for (const prop in mat) { + + const value = mat[prop]; + let n; + + if (value === '') continue; + + switch (prop.toLowerCase()) { + + // Ns is material specular exponent + + case 'kd': + + // Diffuse color (color under white light) using RGB values + + params.color = new THREE.Color().fromArray(value); + + break; + + case 'ks': + + // Specular color (color when light is reflected from shiny surface) using RGB values + params.specular = new THREE.Color().fromArray(value); + + break; + + case 'ke': + + // Emissive using RGB values + params.emissive = new THREE.Color().fromArray(value); + + break; + + case 'map_kd': + + // Diffuse texture map + + setMapForType('map', value); + + break; + + case 'map_ks': + + // Specular map + + setMapForType('specularMap', value); + + break; + + case 'map_ke': + + // Emissive map + + setMapForType('emissiveMap', value); + + break; + + case 'norm': + + setMapForType('normalMap', value); + + break; + + case 'map_bump': + case 'bump': + + // Bump texture map + + setMapForType('bumpMap', value); + + break; + + case 'map_d': + + // Alpha map + + setMapForType('alphaMap', value); + params.transparent = true; + + break; + + case 'ns': + + // The specular exponent (defines the focus of the specular highlight) + // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. + + params.shininess = parseFloat(value); + + break; + + case 'd': + n = parseFloat(value); + + if (n < 1) { + + params.opacity = n; + params.transparent = true; + + } + + break; + + case 'tr': + n = parseFloat(value); + + if (this.options && this.options.invertTrProperty) n = 1 - n; + + if (n > 0) { + + params.opacity = 1 - n; + params.transparent = true; + + } + + break; + + default: + break; + + } + + } + + this.materials[materialName] = new THREE.MeshPhongMaterial(params); + return this.materials[materialName]; + + } + + getTextureParams(value, matParams) { + + const texParams = { + + scale: new THREE.Vector2(1, 1), + offset: new THREE.Vector2(0, 0) + + }; + + const items = value.split(/\s+/); + let pos; + + pos = items.indexOf('-bm'); + + if (pos >= 0) { + + matParams.bumpScale = parseFloat(items[pos + 1]); + items.splice(pos, 2); + + } + + pos = items.indexOf('-s'); + + if (pos >= 0) { + + texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); + items.splice(pos, 4); // we expect 3 parameters here! + + } + + pos = items.indexOf('-o'); + + if (pos >= 0) { + + texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); + items.splice(pos, 4); // we expect 3 parameters here! + + } + + texParams.url = items.join(' ').trim(); + return texParams; + + } + + loadTexture(url, mapping, onLoad, onProgress, onError) { + + const manager = (this.manager !== undefined) ? this.manager : THREE.DefaultLoadingManager; + let loader = manager.getHandler(url); + + if (loader === null) { + + loader = new THREE.TextureLoader(manager); + + } + + if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin); + + const texture = loader.load(url, onLoad, onProgress, onError); + + if (mapping !== undefined) texture.mapping = mapping; + + return texture; + + } + +} + +module.exports = {MTLLoader: MTLLoader}; + +},{}],3:[function(require,module,exports){ +window.THREE.OBJLoader = require("./OBJLoader").OBJLoader; + +},{"./OBJLoader":4}],4:[function(require,module,exports){ +// o object_name | g group_name +const _object_pattern = /^[og]\s*(.+)?/; +// mtllib file_reference +const _material_library_pattern = /^mtllib /; +// usemtl material_name +const _material_use_pattern = /^usemtl /; +// usemap map_name +const _map_use_pattern = /^usemap /; + +const _vA = new THREE.Vector3(); +const _vB = new THREE.Vector3(); +const _vC = new THREE.Vector3(); + +const _ab = new THREE.Vector3(); +const _cb = new THREE.Vector3(); + +function ParserState() { + + const state = { + objects: [], + object: {}, + + vertices: [], + normals: [], + colors: [], + uvs: [], + + materials: {}, + materialLibraries: [], + + startObject: function (name, fromDeclaration) { + + // If the current object (initial from reset) is not from a g/o declaration in the parsed + // file. We need to use it for the first parsed g/o to keep things in sync. + if (this.object && this.object.fromDeclaration === false) { + + this.object.name = name; + this.object.fromDeclaration = (fromDeclaration !== false); + return; + + } + + const previousMaterial = (this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined); + + if (this.object && typeof this.object._finalize === 'function') { + + this.object._finalize(true); + + } + + this.object = { + name: name || '', + fromDeclaration: (fromDeclaration !== false), + + geometry: { + vertices: [], + normals: [], + colors: [], + uvs: [], + hasUVIndices: false + }, + materials: [], + smooth: true, + + startMaterial: function (name, libraries) { + + const previous = this._finalize(false); + + // New usemtl declaration overwrites an inherited material, except if faces were declared + // after the material, then it must be preserved for proper MultiMaterial continuation. + if (previous && (previous.inherited || previous.groupCount <= 0)) { + + this.materials.splice(previous.index, 1); + + } + + const material = { + index: this.materials.length, + name: name || '', + mtllib: (Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : ''), + smooth: (previous !== undefined ? previous.smooth : this.smooth), + groupStart: (previous !== undefined ? previous.groupEnd : 0), + groupEnd: -1, + groupCount: -1, + inherited: false, + + clone: function (index) { + + const cloned = { + index: (typeof index === 'number' ? index : this.index), + name: this.name, + mtllib: this.mtllib, + smooth: this.smooth, + groupStart: 0, + groupEnd: -1, + groupCount: -1, + inherited: false + }; + cloned.clone = this.clone.bind(cloned); + return cloned; + + } + }; + + this.materials.push(material); + + return material; + + }, + + currentMaterial: function () { + + if (this.materials.length > 0) { + + return this.materials[this.materials.length - 1]; + + } + + return undefined; + + }, + + _finalize: function (end) { + + const lastMultiMaterial = this.currentMaterial(); + if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) { + + lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; + lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; + lastMultiMaterial.inherited = false; + + } + + // Ignore objects tail materials if no face declarations followed them before a new o/g started. + if (end && this.materials.length > 1) { + + for (let mi = this.materials.length - 1; mi >= 0; mi--) { + + if (this.materials[mi].groupCount <= 0) { + + this.materials.splice(mi, 1); + + } + + } + + } + + // Guarantee at least one empty material, this makes the creation later more straight forward. + if (end && this.materials.length === 0) { + + this.materials.push({ + name: '', + smooth: this.smooth + }); + + } + + return lastMultiMaterial; + + } + }; + + // Inherit previous objects material. + // Spec tells us that a declared material must be set to all objects until a new material is declared. + // If a usemtl declaration is encountered while this new object is being parsed, it will + // overwrite the inherited material. Exception being that there was already face declarations + // to the inherited material, then it will be preserved for proper MultiMaterial continuation. + + if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') { + + const declared = previousMaterial.clone(0); + declared.inherited = true; + this.object.materials.push(declared); + + } + + this.objects.push(this.object); + + }, + + finalize: function () { + + if (this.object && typeof this.object._finalize === 'function') { + + this.object._finalize(true); + + } + + }, + + parseVertexIndex: function (value, len) { + + const index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 3) * 3; + + }, + + parseNormalIndex: function (value, len) { + + const index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 3) * 3; + + }, + + parseUVIndex: function (value, len) { + + const index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 2) * 2; + + }, + + addVertex: function (a, b, c) { + + const src = this.vertices; + const dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + dst.push(src[b + 0], src[b + 1], src[b + 2]); + dst.push(src[c + 0], src[c + 1], src[c + 2]); + + }, + + addVertexPoint: function (a) { + + const src = this.vertices; + const dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + + }, + + addVertexLine: function (a) { + + const src = this.vertices; + const dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + + }, + + addNormal: function (a, b, c) { + + const src = this.normals; + const dst = this.object.geometry.normals; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + dst.push(src[b + 0], src[b + 1], src[b + 2]); + dst.push(src[c + 0], src[c + 1], src[c + 2]); + + }, + + addFaceNormal: function (a, b, c) { + + const src = this.vertices; + const dst = this.object.geometry.normals; + + _vA.fromArray(src, a); + _vB.fromArray(src, b); + _vC.fromArray(src, c); + + _cb.subVectors(_vC, _vB); + _ab.subVectors(_vA, _vB); + _cb.cross(_ab); + + _cb.normalize(); + + dst.push(_cb.x, _cb.y, _cb.z); + dst.push(_cb.x, _cb.y, _cb.z); + dst.push(_cb.x, _cb.y, _cb.z); + + }, + + addColor: function (a, b, c) { + + const src = this.colors; + const dst = this.object.geometry.colors; + + if (src[a] !== undefined) dst.push(src[a + 0], src[a + 1], src[a + 2]); + if (src[b] !== undefined) dst.push(src[b + 0], src[b + 1], src[b + 2]); + if (src[c] !== undefined) dst.push(src[c + 0], src[c + 1], src[c + 2]); + + }, + + addUV: function (a, b, c) { + + const src = this.uvs; + const dst = this.object.geometry.uvs; + + dst.push(src[a + 0], src[a + 1]); + dst.push(src[b + 0], src[b + 1]); + dst.push(src[c + 0], src[c + 1]); + + }, + + addDefaultUV: function () { + + const dst = this.object.geometry.uvs; + + dst.push(0, 0); + dst.push(0, 0); + dst.push(0, 0); + + }, + + addUVLine: function (a) { + + const src = this.uvs; + const dst = this.object.geometry.uvs; + + dst.push(src[a + 0], src[a + 1]); + + }, + + addFace: function (a, b, c, ua, ub, uc, na, nb, nc) { + + const vLen = this.vertices.length; + + let ia = this.parseVertexIndex(a, vLen); + let ib = this.parseVertexIndex(b, vLen); + let ic = this.parseVertexIndex(c, vLen); + + this.addVertex(ia, ib, ic); + this.addColor(ia, ib, ic); + + // normals + + if (na !== undefined && na !== '') { + + const nLen = this.normals.length; + + ia = this.parseNormalIndex(na, nLen); + ib = this.parseNormalIndex(nb, nLen); + ic = this.parseNormalIndex(nc, nLen); + + this.addNormal(ia, ib, ic); + + } else { + + this.addFaceNormal(ia, ib, ic); + + } + + // uvs + + if (ua !== undefined && ua !== '') { + + const uvLen = this.uvs.length; + + ia = this.parseUVIndex(ua, uvLen); + ib = this.parseUVIndex(ub, uvLen); + ic = this.parseUVIndex(uc, uvLen); + + this.addUV(ia, ib, ic); + + this.object.geometry.hasUVIndices = true; + + } else { + + // add placeholder values (for inconsistent face definitions) + + this.addDefaultUV(); + + } + + }, + + addPointGeometry: function (vertices) { + + this.object.geometry.type = 'THREE.Points'; + + const vLen = this.vertices.length; + + for (let vi = 0, l = vertices.length; vi < l; vi++) { + + const index = this.parseVertexIndex(vertices[vi], vLen); + + this.addVertexPoint(index); + this.addColor(index); + + } + + }, + + addLineGeometry: function (vertices, uvs) { + + this.object.geometry.type = 'Line'; + + const vLen = this.vertices.length; + const uvLen = this.uvs.length; + + for (let vi = 0, l = vertices.length; vi < l; vi++) { + + this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen)); + + } + + for (let uvi = 0, l = uvs.length; uvi < l; uvi++) { + + this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen)); + + } + + } + + }; + + state.startObject('', false); + + return state; + +} + +// + +class OBJLoader extends THREE.Loader { + + constructor(manager) { + + super(manager); + + this.materials = null; + + } + + load(url, onLoad, onProgress, onError) { + + const scope = this; + + const loader = new THREE.FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (text) { + + try { + + onLoad(scope.parse(text)); + + } catch (e) { + + if (onError) { + + onError(e); + + } else { + + console.error(e); + + } + + scope.manager.itemError(url); + + } + + }, onProgress, onError); + + } + + setMaterials(materials) { + + this.materials = materials; + + return this; + + } + + parse(text) { + + const state = new ParserState(); + + if (text.indexOf('\r\n') !== -1) { + + // This is faster than String.split with regex that splits on both + text = text.replace(/\r\n/g, '\n'); + + } + + if (text.indexOf('\\\n') !== -1) { + + // join lines separated by a line continuation character (\) + text = text.replace(/\\\n/g, ''); + + } + + const lines = text.split('\n'); + let line = '', lineFirstChar = ''; + let lineLength = 0; + let result = []; + + // Faster to just trim left side of the line. Use if available. + const trimLeft = (typeof ''.trimLeft === 'function'); + + for (let i = 0, l = lines.length; i < l; i++) { + + line = lines[i]; + + line = trimLeft ? line.trimLeft() : line.trim(); + + lineLength = line.length; + + if (lineLength === 0) continue; + + lineFirstChar = line.charAt(0); + + // @todo invoke passed in handler if any + if (lineFirstChar === '#') continue; + + if (lineFirstChar === 'v') { + + const data = line.split(/\s+/); + + switch (data[0]) { + + case 'v': + state.vertices.push( + parseFloat(data[1]), + parseFloat(data[2]), + parseFloat(data[3]) + ); + if (data.length >= 7) { + + state.colors.push( + parseFloat(data[4]), + parseFloat(data[5]), + parseFloat(data[6]) + ); + + } else { + + // if no colors are defined, add placeholders so color and vertex indices match + + state.colors.push(undefined, undefined, undefined); + + } + + break; + case 'vn': + state.normals.push( + parseFloat(data[1]), + parseFloat(data[2]), + parseFloat(data[3]) + ); + break; + case 'vt': + state.uvs.push( + parseFloat(data[1]), + parseFloat(data[2]) + ); + break; + + } + + } else if (lineFirstChar === 'f') { + + const lineData = line.substr(1).trim(); + const vertexData = lineData.split(/\s+/); + const faceVertices = []; + + // Parse the face vertex data into an easy to work with format + + for (let j = 0, jl = vertexData.length; j < jl; j++) { + + const vertex = vertexData[j]; + + if (vertex.length > 0) { + + const vertexParts = vertex.split('/'); + faceVertices.push(vertexParts); + + } + + } + + // Draw an edge between the first vertex and all subsequent vertices to form an n-gon + + const v1 = faceVertices[0]; + + for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) { + + const v2 = faceVertices[j]; + const v3 = faceVertices[j + 1]; + + state.addFace( + v1[0], v2[0], v3[0], + v1[1], v2[1], v3[1], + v1[2], v2[2], v3[2] + ); + + } + + } else if (lineFirstChar === 'l') { + + const lineParts = line.substring(1).trim().split(' '); + let lineVertices = []; + const lineUVs = []; + + if (line.indexOf('/') === -1) { + + lineVertices = lineParts; + + } else { + + for (let li = 0, llen = lineParts.length; li < llen; li++) { + + const parts = lineParts[li].split('/'); + + if (parts[0] !== '') lineVertices.push(parts[0]); + if (parts[1] !== '') lineUVs.push(parts[1]); + + } + + } + + state.addLineGeometry(lineVertices, lineUVs); + + } else if (lineFirstChar === 'p') { + + const lineData = line.substr(1).trim(); + const pointData = lineData.split(' '); + + state.addPointGeometry(pointData); + + } else if ((result = _object_pattern.exec(line)) !== null) { + + // o object_name + // or + // g group_name + + // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 + // let name = result[ 0 ].substr( 1 ).trim(); + const name = (' ' + result[0].substr(1).trim()).substr(1); + + state.startObject(name); + + } else if (_material_use_pattern.test(line)) { + + // material + + state.object.startMaterial(line.substring(7).trim(), state.materialLibraries); + + } else if (_material_library_pattern.test(line)) { + + // mtl file + + state.materialLibraries.push(line.substring(7).trim()); + + } else if (_map_use_pattern.test(line)) { + + // the line is parsed but ignored since the loader assumes textures are defined MTL files + // (according to https://www.okino.com/conv/imp_wave.htm, 'usemap' is the old-style Wavefront texture reference method) + + console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.'); + + } else if (lineFirstChar === 's') { + + result = line.split(' '); + + // smooth shading + + // @todo Handle files that have varying smooth values for a set of faces inside one geometry, + // but does not define a usemtl for each face set. + // This should be detected and a dummy material created (later MultiMaterial and geometry groups). + // This requires some care to not create extra material on each smooth value for "normal" obj files. + // where explicit usemtl defines geometry groups. + // Example asset: examples/models/obj/cerberus/Cerberus.obj + + /* + * http://paulbourke.net/dataformats/obj/ + * or + * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf + * + * From chapter "Grouping" Syntax explanation "s group_number": + * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. + * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form + * surfaces, smoothing groups are either turned on or off; there is no difference between values greater + * than 0." + */ + if (result.length > 1) { + + const value = result[1].trim().toLowerCase(); + state.object.smooth = (value !== '0' && value !== 'off'); + + } else { + + // ZBrush can produce "s" lines #11707 + state.object.smooth = true; + + } + + const material = state.object.currentMaterial(); + if (material) material.smooth = state.object.smooth; + + } else { + + // Handle null terminated files without exception + if (line === '\0') continue; + + console.warn('THREE.OBJLoader: Unexpected line: "' + line + '"'); + + } + + } + + state.finalize(); + + const container = new THREE.Group(); + container.materialLibraries = [].concat(state.materialLibraries); + + const hasPrimitives = !(state.objects.length === 1 && state.objects[0].geometry.vertices.length === 0); + + if (hasPrimitives === true) { + + for (let i = 0, l = state.objects.length; i < l; i++) { + + const object = state.objects[i]; + const geometry = object.geometry; + const materials = object.materials; + const isLine = (geometry.type === 'Line'); + const isPoints = (geometry.type === 'THREE.Points'); + let hasVertexColors = false; + + // Skip o/g line declarations that did not follow with any faces + if (geometry.vertices.length === 0) continue; + + const buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.setAttribute('position', new THREE.Float32BufferAttribute(geometry.vertices, 3)); + + if (geometry.normals.length > 0) { + + buffergeometry.setAttribute('normal', new THREE.Float32BufferAttribute(geometry.normals, 3)); + + } + + if (geometry.colors.length > 0) { + + hasVertexColors = true; + buffergeometry.setAttribute('color', new THREE.Float32BufferAttribute(geometry.colors, 3)); + + } + + if (geometry.hasUVIndices === true) { + + buffergeometry.setAttribute('uv', new THREE.Float32BufferAttribute(geometry.uvs, 2)); + + } + + // Create materials + + const createdMaterials = []; + + for (let mi = 0, miLen = materials.length; mi < miLen; mi++) { + + const sourceMaterial = materials[mi]; + const materialHash = sourceMaterial.name + '_' + sourceMaterial.smooth + '_' + hasVertexColors; + let material = state.materials[materialHash]; + + if (this.materials !== null) { + + material = this.materials.create(sourceMaterial.name); + + // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. + if (isLine && material && !(material instanceof THREE.LineBasicMaterial)) { + + const materialLine = new THREE.LineBasicMaterial(); + THREE.Material.prototype.copy.call(materialLine, material); + materialLine.color.copy(material.color); + material = materialLine; + + } else if (isPoints && material && !(material instanceof THREE.PointsMaterial)) { + + const materialPoints = new THREE.PointsMaterial({size: 10, sizeAttenuation: false}); + THREE.Material.prototype.copy.call(materialPoints, material); + materialPoints.color.copy(material.color); + materialPoints.map = material.map; + material = materialPoints; + + } + + } + + if (material === undefined) { + + if (isLine) { + + material = new THREE.LineBasicMaterial(); + + } else if (isPoints) { + + material = new THREE.PointsMaterial({size: 1, sizeAttenuation: false}); + + } else { + + material = new THREE.MeshPhongMaterial(); + + } + + material.name = sourceMaterial.name; + material.flatShading = sourceMaterial.smooth ? false : true; + material.vertexColors = hasVertexColors; + + state.materials[materialHash] = material; + + } + + createdMaterials.push(material); + + } + + // Create mesh + + let mesh; + + if (createdMaterials.length > 1) { + + for (let mi = 0, miLen = materials.length; mi < miLen; mi++) { + + const sourceMaterial = materials[mi]; + buffergeometry.addGroup(sourceMaterial.groupStart, sourceMaterial.groupCount, mi); + + } + + if (isLine) { + + mesh = new THREE.LineSegments(buffergeometry, createdMaterials); + + } else if (isPoints) { + + mesh = new THREE.Points(buffergeometry, createdMaterials); + + } else { + + mesh = new THREE.Mesh(buffergeometry, createdMaterials); + + } + + } else { + + if (isLine) { + + mesh = new THREE.LineSegments(buffergeometry, createdMaterials[0]); + + } else if (isPoints) { + + mesh = new THREE.Points(buffergeometry, createdMaterials[0]); + + } else { + + mesh = new THREE.Mesh(buffergeometry, createdMaterials[0]); + + } + + } + + mesh.name = object.name; + + container.add(mesh); + + } + + } else { + + // if there is only the default parser state object with no geometry data, interpret data as point cloud + + if (state.vertices.length > 0) { + + const material = new THREE.PointsMaterial({size: 1, sizeAttenuation: false}); + + const buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.setAttribute('position', new THREE.Float32BufferAttribute(state.vertices, 3)); + + if (state.colors.length > 0 && state.colors[0] !== undefined) { + + buffergeometry.setAttribute('color', new THREE.Float32BufferAttribute(state.colors, 3)); + material.vertexColors = true; + + } + + const points = new THREE.Points(buffergeometry, material); + container.add(points); + + } + + } + + return container; + + } + +} + +module.exports = {OBJLoader: OBJLoader}; + +},{}]},{},[1,3]); diff --git a/src/main/resources/static/gltf-viewer/js/three.js b/src/main/resources/static/gltf-viewer/js/three.js new file mode 100644 index 0000000..595636b --- /dev/null +++ b/src/main/resources/static/gltf-viewer/js/three.js @@ -0,0 +1,36493 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i> 8 & 0xff] + _lut[d0 >> 16 & 0xff] + _lut[d0 >> 24 & 0xff] + '-' + _lut[d1 & 0xff] + _lut[d1 >> 8 & 0xff] + '-' + _lut[d1 >> 16 & 0x0f | 0x40] + _lut[d1 >> 24 & 0xff] + '-' + _lut[d2 & 0x3f | 0x80] + _lut[d2 >> 8 & 0xff] + '-' + _lut[d2 >> 16 & 0xff] + _lut[d2 >> 24 & 0xff] + _lut[d3 & 0xff] + _lut[d3 >> 8 & 0xff] + _lut[d3 >> 16 & 0xff] + _lut[d3 >> 24 & 0xff]; // .toUpperCase() here flattens concatenated strings to save heap memory space. + + return uuid.toUpperCase(); + } + + function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); + } // compute euclidian modulo of m % n + // https://en.wikipedia.org/wiki/Modulo_operation + + + function euclideanModulo(n, m) { + return (n % m + m) % m; + } // Linear mapping from range to range + + + function mapLinear(x, a1, a2, b1, b2) { + return b1 + (x - a1) * (b2 - b1) / (a2 - a1); + } // https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/ + + + function inverseLerp(x, y, value) { + if (x !== y) { + return (value - x) / (y - x); + } else { + return 0; + } + } // https://en.wikipedia.org/wiki/Linear_interpolation + + + function lerp(x, y, t) { + return (1 - t) * x + t * y; + } // http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/ + + + function damp(x, y, lambda, dt) { + return lerp(x, y, 1 - Math.exp(-lambda * dt)); + } // https://www.desmos.com/calculator/vcsjnyz7x4 + + + function pingpong(x, length = 1) { + return length - Math.abs(euclideanModulo(x, length * 2) - length); + } // http://en.wikipedia.org/wiki/Smoothstep + + + function smoothstep(x, min, max) { + if (x <= min) return 0; + if (x >= max) return 1; + x = (x - min) / (max - min); + return x * x * (3 - 2 * x); + } + + function smootherstep(x, min, max) { + if (x <= min) return 0; + if (x >= max) return 1; + x = (x - min) / (max - min); + return x * x * x * (x * (x * 6 - 15) + 10); + } // Random integer from interval + + + function randInt(low, high) { + return low + Math.floor(Math.random() * (high - low + 1)); + } // Random float from interval + + + function randFloat(low, high) { + return low + Math.random() * (high - low); + } // Random float from <-range/2, range/2> interval + + + function randFloatSpread(range) { + return range * (0.5 - Math.random()); + } // Deterministic pseudo-random float in the interval [ 0, 1 ] + + + function seededRandom(s) { + if (s !== undefined) _seed = s % 2147483647; // Park-Miller algorithm + + _seed = _seed * 16807 % 2147483647; + return (_seed - 1) / 2147483646; + } + + function degToRad(degrees) { + return degrees * DEG2RAD; + } + + function radToDeg(radians) { + return radians * RAD2DEG; + } + + function isPowerOfTwo(value) { + return (value & value - 1) === 0 && value !== 0; + } + + function ceilPowerOfTwo(value) { + return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2)); + } + + function floorPowerOfTwo(value) { + return Math.pow(2, Math.floor(Math.log(value) / Math.LN2)); + } + + function setQuaternionFromProperEuler(q, a, b, c, order) { + // Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles + // rotations are applied to the axes in the order specified by 'order' + // rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c' + // angles are in radians + const cos = Math.cos; + const sin = Math.sin; + const c2 = cos(b / 2); + const s2 = sin(b / 2); + const c13 = cos((a + c) / 2); + const s13 = sin((a + c) / 2); + const c1_3 = cos((a - c) / 2); + const s1_3 = sin((a - c) / 2); + const c3_1 = cos((c - a) / 2); + const s3_1 = sin((c - a) / 2); + + switch (order) { + case 'XYX': + q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13); + break; + + case 'YZY': + q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13); + break; + + case 'ZXZ': + q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13); + break; + + case 'XZX': + q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13); + break; + + case 'YXY': + q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13); + break; + + case 'ZYZ': + q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13); + break; + + default: + console.warn('THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order); + } + } + + var MathUtils = /*#__PURE__*/Object.freeze({ + __proto__: null, + DEG2RAD: DEG2RAD, + RAD2DEG: RAD2DEG, + generateUUID: generateUUID, + clamp: clamp, + euclideanModulo: euclideanModulo, + mapLinear: mapLinear, + inverseLerp: inverseLerp, + lerp: lerp, + damp: damp, + pingpong: pingpong, + smoothstep: smoothstep, + smootherstep: smootherstep, + randInt: randInt, + randFloat: randFloat, + randFloatSpread: randFloatSpread, + seededRandom: seededRandom, + degToRad: degToRad, + radToDeg: radToDeg, + isPowerOfTwo: isPowerOfTwo, + ceilPowerOfTwo: ceilPowerOfTwo, + floorPowerOfTwo: floorPowerOfTwo, + setQuaternionFromProperEuler: setQuaternionFromProperEuler + }); + + class Vector2 { + constructor(x = 0, y = 0) { + this.x = x; + this.y = y; + } + + get width() { + return this.x; + } + + set width(value) { + this.x = value; + } + + get height() { + return this.y; + } + + set height(value) { + this.y = value; + } + + set(x, y) { + this.x = x; + this.y = y; + return this; + } + + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + return this; + } + + setX(x) { + this.x = x; + return this; + } + + setY(y) { + this.y = y; + return this; + } + + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + + case 1: + this.y = value; + break; + + default: + throw new Error('index is out of range: ' + index); + } + + return this; + } + + getComponent(index) { + switch (index) { + case 0: + return this.x; + + case 1: + return this.y; + + default: + throw new Error('index is out of range: ' + index); + } + } + + clone() { + return new this.constructor(this.x, this.y); + } + + copy(v) { + this.x = v.x; + this.y = v.y; + return this; + } + + add(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); + return this.addVectors(v, w); + } + + this.x += v.x; + this.y += v.y; + return this; + } + + addScalar(s) { + this.x += s; + this.y += s; + return this; + } + + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + return this; + } + + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + return this; + } + + sub(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); + return this.subVectors(v, w); + } + + this.x -= v.x; + this.y -= v.y; + return this; + } + + subScalar(s) { + this.x -= s; + this.y -= s; + return this; + } + + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + return this; + } + + multiply(v) { + this.x *= v.x; + this.y *= v.y; + return this; + } + + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + return this; + } + + divide(v) { + this.x /= v.x; + this.y /= v.y; + return this; + } + + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + + applyMatrix3(m) { + const x = this.x, + y = this.y; + const e = m.elements; + this.x = e[0] * x + e[3] * y + e[6]; + this.y = e[1] * x + e[4] * y + e[7]; + return this; + } + + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + return this; + } + + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + return this; + } + + clamp(min, max) { + // assumes min < max, componentwise + this.x = Math.max(min.x, Math.min(max.x, this.x)); + this.y = Math.max(min.y, Math.min(max.y, this.y)); + return this; + } + + clampScalar(minVal, maxVal) { + this.x = Math.max(minVal, Math.min(maxVal, this.x)); + this.y = Math.max(minVal, Math.min(maxVal, this.y)); + return this; + } + + clampLength(min, max) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length))); + } + + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + } + + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + } + + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + } + + roundToZero() { + 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); + return this; + } + + negate() { + this.x = -this.x; + this.y = -this.y; + return this; + } + + dot(v) { + return this.x * v.x + this.y * v.y; + } + + cross(v) { + return this.x * v.y - this.y * v.x; + } + + lengthSq() { + return this.x * this.x + this.y * this.y; + } + + length() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } + + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y); + } + + normalize() { + return this.divideScalar(this.length() || 1); + } + + angle() { + // computes the angle in radians with respect to the positive x-axis + const angle = Math.atan2(-this.y, -this.x) + Math.PI; + return angle; + } + + distanceTo(v) { + return Math.sqrt(this.distanceToSquared(v)); + } + + distanceToSquared(v) { + const dx = this.x - v.x, + dy = this.y - v.y; + return dx * dx + dy * dy; + } + + manhattanDistanceTo(v) { + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y); + } + + setLength(length) { + return this.normalize().multiplyScalar(length); + } + + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + return this; + } + + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + return this; + } + + equals(v) { + return v.x === this.x && v.y === this.y; + } + + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + return this; + } + + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + return array; + } + + fromBufferAttribute(attribute, index, offset) { + if (offset !== undefined) { + console.warn('THREE.Vector2: offset has been removed from .fromBufferAttribute().'); + } + + this.x = attribute.getX(index); + this.y = attribute.getY(index); + return this; + } + + rotateAround(center, angle) { + const c = Math.cos(angle), + s = Math.sin(angle); + const x = this.x - center.x; + const y = this.y - center.y; + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + return this; + } + + random() { + this.x = Math.random(); + this.y = Math.random(); + return this; + } + + } + + Vector2.prototype.isVector2 = true; + + class Matrix3 { + constructor() { + this.elements = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + + if (arguments.length > 0) { + console.error('THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.'); + } + } + + set(n11, n12, n13, n21, n22, n23, n31, n32, n33) { + const te = this.elements; + te[0] = n11; + te[1] = n21; + te[2] = n31; + te[3] = n12; + te[4] = n22; + te[5] = n32; + te[6] = n13; + te[7] = n23; + te[8] = n33; + return this; + } + + identity() { + this.set(1, 0, 0, 0, 1, 0, 0, 0, 1); + return this; + } + + copy(m) { + const te = this.elements; + const me = m.elements; + te[0] = me[0]; + te[1] = me[1]; + te[2] = me[2]; + te[3] = me[3]; + te[4] = me[4]; + te[5] = me[5]; + te[6] = me[6]; + te[7] = me[7]; + te[8] = me[8]; + return this; + } + + extractBasis(xAxis, yAxis, zAxis) { + xAxis.setFromMatrix3Column(this, 0); + yAxis.setFromMatrix3Column(this, 1); + zAxis.setFromMatrix3Column(this, 2); + return this; + } + + setFromMatrix4(m) { + const me = m.elements; + this.set(me[0], me[4], me[8], me[1], me[5], me[9], me[2], me[6], me[10]); + return this; + } + + multiply(m) { + return this.multiplyMatrices(this, m); + } + + premultiply(m) { + return this.multiplyMatrices(m, this); + } + + multiplyMatrices(a, b) { + const ae = a.elements; + const be = b.elements; + const te = this.elements; + const a11 = ae[0], + a12 = ae[3], + a13 = ae[6]; + const a21 = ae[1], + a22 = ae[4], + a23 = ae[7]; + const a31 = ae[2], + a32 = ae[5], + a33 = ae[8]; + const b11 = be[0], + b12 = be[3], + b13 = be[6]; + const b21 = be[1], + b22 = be[4], + b23 = be[7]; + const b31 = be[2], + b32 = be[5], + b33 = be[8]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31; + te[3] = a11 * b12 + a12 * b22 + a13 * b32; + te[6] = a11 * b13 + a12 * b23 + a13 * b33; + te[1] = a21 * b11 + a22 * b21 + a23 * b31; + te[4] = a21 * b12 + a22 * b22 + a23 * b32; + te[7] = a21 * b13 + a22 * b23 + a23 * b33; + te[2] = a31 * b11 + a32 * b21 + a33 * b31; + te[5] = a31 * b12 + a32 * b22 + a33 * b32; + te[8] = a31 * b13 + a32 * b23 + a33 * b33; + return this; + } + + multiplyScalar(s) { + const te = this.elements; + te[0] *= s; + te[3] *= s; + te[6] *= s; + te[1] *= s; + te[4] *= s; + te[7] *= s; + te[2] *= s; + te[5] *= s; + te[8] *= s; + return this; + } + + determinant() { + const te = this.elements; + const a = te[0], + b = te[1], + c = te[2], + d = te[3], + e = te[4], + f = te[5], + g = te[6], + h = te[7], + i = te[8]; + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + } + + invert() { + const te = this.elements, + n11 = te[0], + n21 = te[1], + n31 = te[2], + n12 = te[3], + n22 = te[4], + n32 = te[5], + n13 = te[6], + n23 = te[7], + n33 = te[8], + t11 = n33 * n22 - n32 * n23, + t12 = n32 * n13 - n33 * n12, + t13 = n23 * n12 - n22 * n13, + det = n11 * t11 + n21 * t12 + n31 * t13; + if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0); + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n31 * n23 - n33 * n21) * detInv; + te[2] = (n32 * n21 - n31 * n22) * detInv; + te[3] = t12 * detInv; + te[4] = (n33 * n11 - n31 * n13) * detInv; + te[5] = (n31 * n12 - n32 * n11) * detInv; + te[6] = t13 * detInv; + te[7] = (n21 * n13 - n23 * n11) * detInv; + te[8] = (n22 * n11 - n21 * n12) * detInv; + return this; + } + + transpose() { + let tmp; + const m = this.elements; + tmp = m[1]; + m[1] = m[3]; + m[3] = tmp; + tmp = m[2]; + m[2] = m[6]; + m[6] = tmp; + tmp = m[5]; + m[5] = m[7]; + m[7] = tmp; + return this; + } + + getNormalMatrix(matrix4) { + return this.setFromMatrix4(matrix4).invert().transpose(); + } + + transposeIntoArray(r) { + const m = this.elements; + r[0] = m[0]; + r[1] = m[3]; + r[2] = m[6]; + r[3] = m[1]; + r[4] = m[4]; + r[5] = m[7]; + r[6] = m[2]; + r[7] = m[5]; + r[8] = m[8]; + return this; + } + + setUvTransform(tx, ty, sx, sy, rotation, cx, cy) { + const c = Math.cos(rotation); + const s = Math.sin(rotation); + this.set(sx * c, sx * s, -sx * (c * cx + s * cy) + cx + tx, -sy * s, sy * c, -sy * (-s * cx + c * cy) + cy + ty, 0, 0, 1); + return this; + } + + scale(sx, sy) { + const te = this.elements; + te[0] *= sx; + te[3] *= sx; + te[6] *= sx; + te[1] *= sy; + te[4] *= sy; + te[7] *= sy; + return this; + } + + rotate(theta) { + const c = Math.cos(theta); + const s = Math.sin(theta); + const te = this.elements; + const a11 = te[0], + a12 = te[3], + a13 = te[6]; + const a21 = te[1], + a22 = te[4], + a23 = te[7]; + te[0] = c * a11 + s * a21; + te[3] = c * a12 + s * a22; + te[6] = c * a13 + s * a23; + te[1] = -s * a11 + c * a21; + te[4] = -s * a12 + c * a22; + te[7] = -s * a13 + c * a23; + return this; + } + + translate(tx, ty) { + const te = this.elements; + te[0] += tx * te[2]; + te[3] += tx * te[5]; + te[6] += tx * te[8]; + te[1] += ty * te[2]; + te[4] += ty * te[5]; + te[7] += ty * te[8]; + return this; + } + + equals(matrix) { + const te = this.elements; + const me = matrix.elements; + + for (let i = 0; i < 9; i++) { + if (te[i] !== me[i]) return false; + } + + return true; + } + + fromArray(array, offset = 0) { + for (let i = 0; i < 9; i++) { + this.elements[i] = array[i + offset]; + } + + return this; + } + + toArray(array = [], offset = 0) { + const te = this.elements; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; + return array; + } + + clone() { + return new this.constructor().fromArray(this.elements); + } + + } + + Matrix3.prototype.isMatrix3 = true; + + let _canvas; + + class ImageUtils { + static getDataURL(image) { + if (/^data:/i.test(image.src)) { + return image.src; + } + + if (typeof HTMLCanvasElement == 'undefined') { + return image.src; + } + + let canvas; + + if (image instanceof HTMLCanvasElement) { + canvas = image; + } else { + if (_canvas === undefined) _canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); + _canvas.width = image.width; + _canvas.height = image.height; + + const context = _canvas.getContext('2d'); + + if (image instanceof ImageData) { + context.putImageData(image, 0, 0); + } else { + context.drawImage(image, 0, 0, image.width, image.height); + } + + canvas = _canvas; + } + + if (canvas.width > 2048 || canvas.height > 2048) { + console.warn('THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image); + return canvas.toDataURL('image/jpeg', 0.6); + } else { + return canvas.toDataURL('image/png'); + } + } + + } + + let textureId = 0; + + class Texture extends EventDispatcher { + constructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding) { + super(); + Object.defineProperty(this, 'id', { + value: textureId++ + }); + this.uuid = generateUUID(); + this.name = ''; + this.image = image; + this.mipmaps = []; + this.mapping = mapping; + this.wrapS = wrapS; + this.wrapT = wrapT; + this.magFilter = magFilter; + this.minFilter = minFilter; + this.anisotropy = anisotropy; + this.format = format; + this.internalFormat = null; + this.type = type; + this.offset = new Vector2(0, 0); + this.repeat = new Vector2(1, 1); + this.center = new Vector2(0, 0); + this.rotation = 0; + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) + // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. + // + // Also changing the encoding after already used by a Material will not automatically make the Material + // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. + + this.encoding = encoding; + this.version = 0; + this.onUpdate = null; + this.isRenderTargetTexture = false; + } + + updateMatrix() { + this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y); + } + + clone() { + return new this.constructor().copy(this); + } + + copy(source) { + this.name = source.name; + this.image = source.image; + this.mipmaps = source.mipmaps.slice(0); + this.mapping = source.mapping; + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + this.anisotropy = source.anisotropy; + this.format = source.format; + this.internalFormat = source.internalFormat; + this.type = source.type; + this.offset.copy(source.offset); + this.repeat.copy(source.repeat); + this.center.copy(source.center); + this.rotation = source.rotation; + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy(source.matrix); + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.encoding = source.encoding; + return this; + } + + toJSON(meta) { + const isRootObject = meta === undefined || typeof meta === 'string'; + + if (!isRootObject && meta.textures[this.uuid] !== undefined) { + return meta.textures[this.uuid]; + } + + const output = { + 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 (this.image !== undefined) { + // TODO: Move to THREE.Image + const image = this.image; + + if (image.uuid === undefined) { + image.uuid = generateUUID(); // UGH + } + + if (!isRootObject && meta.images[image.uuid] === undefined) { + let url; + + if (Array.isArray(image)) { + // process array of images e.g. CubeTexture + url = []; + + for (let i = 0, l = image.length; i < l; i++) { + // check cube texture with data textures + if (image[i].isDataTexture) { + url.push(serializeImage(image[i].image)); + } else { + url.push(serializeImage(image[i])); + } + } + } else { + // process single image + url = serializeImage(image); + } + + meta.images[image.uuid] = { + uuid: image.uuid, + url: url + }; + } + + output.image = image.uuid; + } + + if (!isRootObject) { + meta.textures[this.uuid] = output; + } + + return output; + } + + dispose() { + this.dispatchEvent({ + type: 'dispose' + }); + } + + transformUv(uv) { + if (this.mapping !== UVMapping) return uv; + uv.applyMatrix3(this.matrix); + + if (uv.x < 0 || uv.x > 1) { + switch (this.wrapS) { + case RepeatWrapping: + uv.x = uv.x - Math.floor(uv.x); + break; + + case ClampToEdgeWrapping: + uv.x = uv.x < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + if (Math.abs(Math.floor(uv.x) % 2) === 1) { + uv.x = Math.ceil(uv.x) - uv.x; + } else { + uv.x = uv.x - Math.floor(uv.x); + } + + break; + } + } + + if (uv.y < 0 || uv.y > 1) { + switch (this.wrapT) { + case RepeatWrapping: + uv.y = uv.y - Math.floor(uv.y); + break; + + case ClampToEdgeWrapping: + uv.y = uv.y < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + if (Math.abs(Math.floor(uv.y) % 2) === 1) { + uv.y = Math.ceil(uv.y) - uv.y; + } else { + uv.y = uv.y - Math.floor(uv.y); + } + + break; + } + } + + if (this.flipY) { + uv.y = 1 - uv.y; + } + + return uv; + } + + set needsUpdate(value) { + if (value === true) this.version++; + } + + } + + Texture.DEFAULT_IMAGE = undefined; + Texture.DEFAULT_MAPPING = UVMapping; + Texture.prototype.isTexture = true; + + function serializeImage(image) { + if (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) { + // default images + return ImageUtils.getDataURL(image); + } else { + if (image.data) { + // images of DataTexture + return { + data: Array.prototype.slice.call(image.data), + width: image.width, + height: image.height, + type: image.data.constructor.name + }; + } else { + console.warn('THREE.Texture: Unable to serialize Texture.'); + return {}; + } + } + } + + class Vector4 { + constructor(x = 0, y = 0, z = 0, w = 1) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + get width() { + return this.z; + } + + set width(value) { + this.z = value; + } + + get height() { + return this.w; + } + + set height(value) { + this.w = value; + } + + set(x, y, z, w) { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + return this; + } + + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + return this; + } + + setX(x) { + this.x = x; + return this; + } + + setY(y) { + this.y = y; + return this; + } + + setZ(z) { + this.z = z; + return this; + } + + setW(w) { + this.w = w; + return this; + } + + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + + case 1: + this.y = value; + break; + + case 2: + this.z = value; + break; + + case 3: + this.w = value; + break; + + default: + throw new Error('index is out of range: ' + index); + } + + return this; + } + + getComponent(index) { + switch (index) { + 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: ' + index); + } + } + + clone() { + return new this.constructor(this.x, this.y, this.z, this.w); + } + + copy(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = v.w !== undefined ? v.w : 1; + return this; + } + + add(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); + return this.addVectors(v, w); + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + return this; + } + + addScalar(s) { + this.x += s; + this.y += s; + this.z += s; + this.w += s; + return this; + } + + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + return this; + } + + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + return this; + } + + sub(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); + return this.subVectors(v, w); + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + return this; + } + + subScalar(s) { + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + return this; + } + + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + return this; + } + + multiply(v) { + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + this.w *= v.w; + return this; + } + + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + return this; + } + + applyMatrix4(m) { + const x = this.x, + y = this.y, + z = this.z, + w = this.w; + const e = m.elements; + this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w; + this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w; + this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w; + this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w; + return this; + } + + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + + setAxisAngleFromQuaternion(q) { + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + // q is assumed to be normalized + this.w = 2 * Math.acos(q.w); + const s = Math.sqrt(1 - q.w * q.w); + + if (s < 0.0001) { + this.x = 1; + this.y = 0; + this.z = 0; + } else { + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + } + + return this; + } + + setAxisAngleFromRotationMatrix(m) { + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + let angle, x, y, z; // variables for result + + const epsilon = 0.01, + // margin to allow for rounding errors + epsilon2 = 0.1, + // margin to distinguish between 0 and 180 degrees + te = m.elements, + m11 = te[0], + m12 = te[4], + m13 = te[8], + m21 = te[1], + m22 = te[5], + m23 = te[9], + m31 = te[2], + m32 = te[6], + m33 = te[10]; + + if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) { + // singularity found + // first check for identity matrix which must have +1 for all terms + // in leading diagonal and zero in other terms + if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) { + // this singularity is identity matrix so angle = 0 + this.set(1, 0, 0, 0); + return this; // zero angle, arbitrary axis + } // otherwise this singularity is angle = 180 + + + angle = Math.PI; + const xx = (m11 + 1) / 2; + const yy = (m22 + 1) / 2; + const zz = (m33 + 1) / 2; + const xy = (m12 + m21) / 4; + const xz = (m13 + m31) / 4; + const yz = (m23 + m32) / 4; + + if (xx > yy && xx > zz) { + // m11 is the largest diagonal term + if (xx < epsilon) { + x = 0; + y = 0.707106781; + z = 0.707106781; + } else { + x = Math.sqrt(xx); + y = xy / x; + z = xz / x; + } + } else if (yy > zz) { + // m22 is the largest diagonal term + if (yy < epsilon) { + x = 0.707106781; + y = 0; + z = 0.707106781; + } else { + y = Math.sqrt(yy); + x = xy / y; + z = yz / y; + } + } else { + // m33 is the largest diagonal term so base result on this + if (zz < epsilon) { + x = 0.707106781; + y = 0.707106781; + z = 0; + } else { + z = Math.sqrt(zz); + x = xz / z; + y = yz / z; + } + } + + this.set(x, y, z, angle); + return this; // return 180 deg rotation + } // as we have reached here there are no singularities so we can handle normally + + + let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12)); // used to normalize + + if (Math.abs(s) < 0.001) s = 1; // prevent divide by zero, should not happen if matrix is orthogonal and should be + // caught by singularity test above, but I've left it in just in case + + this.x = (m32 - m23) / s; + this.y = (m13 - m31) / s; + this.z = (m21 - m12) / s; + this.w = Math.acos((m11 + m22 + m33 - 1) / 2); + return this; + } + + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + this.w = Math.min(this.w, v.w); + return this; + } + + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + this.w = Math.max(this.w, v.w); + return this; + } + + clamp(min, max) { + // assumes min < max, componentwise + this.x = Math.max(min.x, Math.min(max.x, this.x)); + this.y = Math.max(min.y, Math.min(max.y, this.y)); + this.z = Math.max(min.z, Math.min(max.z, this.z)); + this.w = Math.max(min.w, Math.min(max.w, this.w)); + return this; + } + + clampScalar(minVal, maxVal) { + this.x = Math.max(minVal, Math.min(maxVal, this.x)); + this.y = Math.max(minVal, Math.min(maxVal, this.y)); + this.z = Math.max(minVal, Math.min(maxVal, this.z)); + this.w = Math.max(minVal, Math.min(maxVal, this.w)); + return this; + } + + clampLength(min, max) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length))); + } + + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + this.w = Math.floor(this.w); + return this; + } + + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + this.w = Math.ceil(this.w); + return this; + } + + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + this.w = Math.round(this.w); + return this; + } + + roundToZero() { + 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.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w); + return this; + } + + negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + this.w = -this.w; + return this; + } + + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + } + + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + } + + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w); + } + + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w); + } + + normalize() { + return this.divideScalar(this.length() || 1); + } + + setLength(length) { + return this.normalize().multiplyScalar(length); + } + + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + this.w += (v.w - this.w) * alpha; + return this; + } + + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + this.z = v1.z + (v2.z - v1.z) * alpha; + this.w = v1.w + (v2.w - v1.w) * alpha; + return this; + } + + equals(v) { + return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w; + } + + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + this.w = array[offset + 3]; + return this; + } + + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + array[offset + 3] = this.w; + return array; + } + + fromBufferAttribute(attribute, index, offset) { + if (offset !== undefined) { + console.warn('THREE.Vector4: offset has been removed from .fromBufferAttribute().'); + } + + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + this.w = attribute.getW(index); + return this; + } + + random() { + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + this.w = Math.random(); + return this; + } + + } + + Vector4.prototype.isVector4 = true; + + /* + In options, we can specify: + * Texture parameters for an auto-generated target texture + * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers + */ + + class WebGLRenderTarget extends EventDispatcher { + constructor(width, height, options = {}) { + super(); + this.width = width; + this.height = height; + this.depth = 1; + this.scissor = new Vector4(0, 0, width, height); + this.scissorTest = false; + this.viewport = new Vector4(0, 0, width, height); + this.texture = new Texture(undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding); + this.texture.isRenderTargetTexture = true; + this.texture.image = { + width: width, + height: height, + depth: 1 + }; + this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; + this.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null; + this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; + this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; + this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false; + this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; + } + + setTexture(texture) { + texture.image = { + width: this.width, + height: this.height, + depth: this.depth + }; + this.texture = texture; + } + + setSize(width, height, depth = 1) { + if (this.width !== width || this.height !== height || this.depth !== depth) { + this.width = width; + this.height = height; + this.depth = depth; + this.texture.image.width = width; + this.texture.image.height = height; + this.texture.image.depth = depth; + this.dispose(); + } + + this.viewport.set(0, 0, width, height); + this.scissor.set(0, 0, width, height); + } + + clone() { + return new this.constructor().copy(this); + } + + copy(source) { + this.width = source.width; + this.height = source.height; + this.depth = source.depth; + this.viewport.copy(source.viewport); + this.texture = source.texture.clone(); + this.texture.image = { ...this.texture.image + }; // See #20328. + + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + this.depthTexture = source.depthTexture; + return this; + } + + dispose() { + this.dispatchEvent({ + type: 'dispose' + }); + } + + } + + WebGLRenderTarget.prototype.isWebGLRenderTarget = true; + + class WebGLMultipleRenderTargets extends WebGLRenderTarget { + constructor(width, height, count) { + super(width, height); + const texture = this.texture; + this.texture = []; + + for (let i = 0; i < count; i++) { + this.texture[i] = texture.clone(); + } + } + + setSize(width, height, depth = 1) { + if (this.width !== width || this.height !== height || this.depth !== depth) { + this.width = width; + this.height = height; + this.depth = depth; + + for (let i = 0, il = this.texture.length; i < il; i++) { + this.texture[i].image.width = width; + this.texture[i].image.height = height; + this.texture[i].image.depth = depth; + } + + this.dispose(); + } + + this.viewport.set(0, 0, width, height); + this.scissor.set(0, 0, width, height); + return this; + } + + copy(source) { + this.dispose(); + this.width = source.width; + this.height = source.height; + this.depth = source.depth; + this.viewport.set(0, 0, this.width, this.height); + this.scissor.set(0, 0, this.width, this.height); + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + this.depthTexture = source.depthTexture; + this.texture.length = 0; + + for (let i = 0, il = source.texture.length; i < il; i++) { + this.texture[i] = source.texture[i].clone(); + } + + return this; + } + + } + + WebGLMultipleRenderTargets.prototype.isWebGLMultipleRenderTargets = true; + + class WebGLMultisampleRenderTarget extends WebGLRenderTarget { + constructor(width, height, options) { + super(width, height, options); + this.samples = 4; + } + + copy(source) { + super.copy.call(this, source); + this.samples = source.samples; + return this; + } + + } + + WebGLMultisampleRenderTarget.prototype.isWebGLMultisampleRenderTarget = true; + + class Quaternion { + constructor(x = 0, y = 0, z = 0, w = 1) { + this._x = x; + this._y = y; + this._z = z; + this._w = w; + } + + static slerp(qa, qb, qm, t) { + console.warn('THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead.'); + return qm.slerpQuaternions(qa, qb, t); + } + + static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) { + // fuzz-free, array-based Quaternion SLERP operation + let x0 = src0[srcOffset0 + 0], + y0 = src0[srcOffset0 + 1], + z0 = src0[srcOffset0 + 2], + w0 = src0[srcOffset0 + 3]; + const x1 = src1[srcOffset1 + 0], + y1 = src1[srcOffset1 + 1], + z1 = src1[srcOffset1 + 2], + w1 = src1[srcOffset1 + 3]; + + if (t === 0) { + dst[dstOffset + 0] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; + return; + } + + if (t === 1) { + dst[dstOffset + 0] = x1; + dst[dstOffset + 1] = y1; + dst[dstOffset + 2] = z1; + dst[dstOffset + 3] = w1; + return; + } + + if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) { + let s = 1 - t; + const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, + dir = cos >= 0 ? 1 : -1, + sqrSin = 1 - cos * cos; // Skip the Slerp for tiny steps to avoid numeric problems: + + if (sqrSin > Number.EPSILON) { + const sin = Math.sqrt(sqrSin), + len = Math.atan2(sin, cos * dir); + s = Math.sin(s * len) / sin; + t = Math.sin(t * len) / sin; + } + + const tDir = t * dir; + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; // Normalize in case we just did a lerp: + + if (s === 1 - t) { + const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0); + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + } + } + + dst[dstOffset] = x0; + dst[dstOffset + 1] = y0; + dst[dstOffset + 2] = z0; + dst[dstOffset + 3] = w0; + } + + static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) { + const x0 = src0[srcOffset0]; + const y0 = src0[srcOffset0 + 1]; + const z0 = src0[srcOffset0 + 2]; + const w0 = src0[srcOffset0 + 3]; + const x1 = src1[srcOffset1]; + const y1 = src1[srcOffset1 + 1]; + const z1 = src1[srcOffset1 + 2]; + const w1 = src1[srcOffset1 + 3]; + dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1; + dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1; + dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1; + dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1; + return dst; + } + + get x() { + return this._x; + } + + set x(value) { + this._x = value; + + this._onChangeCallback(); + } + + get y() { + return this._y; + } + + set y(value) { + this._y = value; + + this._onChangeCallback(); + } + + get z() { + return this._z; + } + + set z(value) { + this._z = value; + + this._onChangeCallback(); + } + + get w() { + return this._w; + } + + set w(value) { + this._w = value; + + this._onChangeCallback(); + } + + set(x, y, z, w) { + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + this._onChangeCallback(); + + return this; + } + + clone() { + return new this.constructor(this._x, this._y, this._z, this._w); + } + + copy(quaternion) { + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + + this._onChangeCallback(); + + return this; + } + + setFromEuler(euler, update) { + if (!(euler && euler.isEuler)) { + throw new Error('THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.'); + } + + const x = euler._x, + y = euler._y, + z = euler._z, + order = euler._order; // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + const cos = Math.cos; + const sin = Math.sin; + const c1 = cos(x / 2); + const c2 = cos(y / 2); + const c3 = cos(z / 2); + const s1 = sin(x / 2); + const s2 = sin(y / 2); + const s3 = sin(z / 2); + + switch (order) { + case 'XYZ': + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + + case 'YXZ': + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + + case 'ZXY': + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + + case 'ZYX': + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + + case 'YZX': + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + break; + + case 'XZY': + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + break; + + default: + console.warn('THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order); + } + + if (update !== false) this._onChangeCallback(); + return this; + } + + setFromAxisAngle(axis, angle) { + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + // assumes axis is normalized + const halfAngle = angle / 2, + s = Math.sin(halfAngle); + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos(halfAngle); + + this._onChangeCallback(); + + return this; + } + + setFromRotationMatrix(m) { + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + const te = m.elements, + m11 = te[0], + m12 = te[4], + m13 = te[8], + m21 = te[1], + m22 = te[5], + m23 = te[9], + m31 = te[2], + m32 = te[6], + m33 = te[10], + trace = m11 + m22 + m33; + + if (trace > 0) { + const s = 0.5 / Math.sqrt(trace + 1.0); + this._w = 0.25 / s; + this._x = (m32 - m23) * s; + this._y = (m13 - m31) * s; + this._z = (m21 - m12) * s; + } else if (m11 > m22 && m11 > m33) { + const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33); + this._w = (m32 - m23) / s; + this._x = 0.25 * s; + this._y = (m12 + m21) / s; + this._z = (m13 + m31) / s; + } else if (m22 > m33) { + const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33); + this._w = (m13 - m31) / s; + this._x = (m12 + m21) / s; + this._y = 0.25 * s; + this._z = (m23 + m32) / s; + } else { + const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22); + this._w = (m21 - m12) / s; + this._x = (m13 + m31) / s; + this._y = (m23 + m32) / s; + this._z = 0.25 * s; + } + + this._onChangeCallback(); + + return this; + } + + setFromUnitVectors(vFrom, vTo) { + // assumes direction vectors vFrom and vTo are normalized + let r = vFrom.dot(vTo) + 1; + + if (r < Number.EPSILON) { + // vFrom and vTo point in opposite directions + r = 0; + + if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) { + this._x = -vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + } else { + this._x = 0; + this._y = -vFrom.z; + this._z = vFrom.y; + this._w = r; + } + } else { + // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + } + + return this.normalize(); + } + + angleTo(q) { + return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1))); + } + + rotateTowards(q, step) { + const angle = this.angleTo(q); + if (angle === 0) return this; + const t = Math.min(1, step / angle); + this.slerp(q, t); + return this; + } + + identity() { + return this.set(0, 0, 0, 1); + } + + invert() { + // quaternion is assumed to have unit length + return this.conjugate(); + } + + conjugate() { + this._x *= -1; + this._y *= -1; + this._z *= -1; + + this._onChangeCallback(); + + return this; + } + + dot(v) { + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + } + + lengthSq() { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + } + + length() { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w); + } + + normalize() { + let l = this.length(); + + if (l === 0) { + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + } else { + l = 1 / l; + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + } + + this._onChangeCallback(); + + return this; + } + + multiply(q, p) { + if (p !== undefined) { + console.warn('THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.'); + return this.multiplyQuaternions(q, p); + } + + return this.multiplyQuaternions(this, q); + } + + premultiply(q) { + return this.multiplyQuaternions(q, this); + } + + multiplyQuaternions(a, b) { + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + const qax = a._x, + qay = a._y, + qaz = a._z, + qaw = a._w; + const qbx = b._x, + qby = b._y, + qbz = b._z, + qbw = b._w; + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + this._onChangeCallback(); + + return this; + } + + slerp(qb, t) { + if (t === 0) return this; + if (t === 1) return this.copy(qb); + const x = this._x, + y = this._y, + z = this._z, + w = this._w; // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + + if (cosHalfTheta < 0) { + this._w = -qb._w; + this._x = -qb._x; + this._y = -qb._y; + this._z = -qb._z; + cosHalfTheta = -cosHalfTheta; + } else { + this.copy(qb); + } + + if (cosHalfTheta >= 1.0) { + this._w = w; + this._x = x; + this._y = y; + this._z = z; + return this; + } + + const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; + + if (sqrSinHalfTheta <= Number.EPSILON) { + const s = 1 - t; + this._w = s * w + t * this._w; + this._x = s * x + t * this._x; + this._y = s * y + t * this._y; + this._z = s * z + t * this._z; + this.normalize(); + + this._onChangeCallback(); + + return this; + } + + const sinHalfTheta = Math.sqrt(sqrSinHalfTheta); + const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta); + const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta, + ratioB = Math.sin(t * halfTheta) / sinHalfTheta; + this._w = w * ratioA + this._w * ratioB; + this._x = x * ratioA + this._x * ratioB; + this._y = y * ratioA + this._y * ratioB; + this._z = z * ratioA + this._z * ratioB; + + this._onChangeCallback(); + + return this; + } + + slerpQuaternions(qa, qb, t) { + this.copy(qa).slerp(qb, t); + } + + equals(quaternion) { + return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w; + } + + fromArray(array, offset = 0) { + this._x = array[offset]; + this._y = array[offset + 1]; + this._z = array[offset + 2]; + this._w = array[offset + 3]; + + this._onChangeCallback(); + + return this; + } + + toArray(array = [], offset = 0) { + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._w; + return array; + } + + fromBufferAttribute(attribute, index) { + this._x = attribute.getX(index); + this._y = attribute.getY(index); + this._z = attribute.getZ(index); + this._w = attribute.getW(index); + return this; + } + + _onChange(callback) { + this._onChangeCallback = callback; + return this; + } + + _onChangeCallback() {} + + } + + Quaternion.prototype.isQuaternion = true; + + class Vector3 { + constructor(x = 0, y = 0, z = 0) { + this.x = x; + this.y = y; + this.z = z; + } + + set(x, y, z) { + if (z === undefined) z = this.z; // sprite.scale.set(x,y) + + this.x = x; + this.y = y; + this.z = z; + return this; + } + + setScalar(scalar) { + this.x = scalar; + this.y = scalar; + this.z = scalar; + return this; + } + + setX(x) { + this.x = x; + return this; + } + + setY(y) { + this.y = y; + return this; + } + + setZ(z) { + this.z = z; + return this; + } + + setComponent(index, value) { + switch (index) { + case 0: + this.x = value; + break; + + case 1: + this.y = value; + break; + + case 2: + this.z = value; + break; + + default: + throw new Error('index is out of range: ' + index); + } + + return this; + } + + getComponent(index) { + switch (index) { + case 0: + return this.x; + + case 1: + return this.y; + + case 2: + return this.z; + + default: + throw new Error('index is out of range: ' + index); + } + } + + clone() { + return new this.constructor(this.x, this.y, this.z); + } + + copy(v) { + this.x = v.x; + this.y = v.y; + this.z = v.z; + return this; + } + + add(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.'); + return this.addVectors(v, w); + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + return this; + } + + addScalar(s) { + this.x += s; + this.y += s; + this.z += s; + return this; + } + + addVectors(a, b) { + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + return this; + } + + addScaledVector(v, s) { + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + return this; + } + + sub(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.'); + return this.subVectors(v, w); + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + return this; + } + + subScalar(s) { + this.x -= s; + this.y -= s; + this.z -= s; + return this; + } + + subVectors(a, b) { + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + return this; + } + + multiply(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.'); + return this.multiplyVectors(v, w); + } + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + return this; + } + + multiplyScalar(scalar) { + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + return this; + } + + multiplyVectors(a, b) { + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + return this; + } + + applyEuler(euler) { + if (!(euler && euler.isEuler)) { + console.error('THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.'); + } + + return this.applyQuaternion(_quaternion$4.setFromEuler(euler)); + } + + applyAxisAngle(axis, angle) { + return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle)); + } + + applyMatrix3(m) { + const x = this.x, + y = this.y, + z = this.z; + const e = m.elements; + this.x = e[0] * x + e[3] * y + e[6] * z; + this.y = e[1] * x + e[4] * y + e[7] * z; + this.z = e[2] * x + e[5] * y + e[8] * z; + return this; + } + + applyNormalMatrix(m) { + return this.applyMatrix3(m).normalize(); + } + + applyMatrix4(m) { + const x = this.x, + y = this.y, + z = this.z; + const e = m.elements; + const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); + this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w; + this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w; + this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w; + return this; + } + + applyQuaternion(q) { + const x = this.x, + y = this.y, + z = this.z; + const qx = q.x, + qy = q.y, + qz = q.z, + qw = q.w; // calculate quat * vector + + const ix = qw * x + qy * z - qz * y; + const iy = qw * y + qz * x - qx * z; + const iz = qw * z + qx * y - qy * x; + const iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat + + this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy; + this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz; + this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx; + return this; + } + + project(camera) { + return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix); + } + + unproject(camera) { + return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld); + } + + transformDirection(m) { + // input: THREE.Matrix4 affine matrix + // vector interpreted as a direction + const x = this.x, + y = this.y, + z = this.z; + const e = m.elements; + this.x = e[0] * x + e[4] * y + e[8] * z; + this.y = e[1] * x + e[5] * y + e[9] * z; + this.z = e[2] * x + e[6] * y + e[10] * z; + return this.normalize(); + } + + divide(v) { + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + return this; + } + + divideScalar(scalar) { + return this.multiplyScalar(1 / scalar); + } + + min(v) { + this.x = Math.min(this.x, v.x); + this.y = Math.min(this.y, v.y); + this.z = Math.min(this.z, v.z); + return this; + } + + max(v) { + this.x = Math.max(this.x, v.x); + this.y = Math.max(this.y, v.y); + this.z = Math.max(this.z, v.z); + return this; + } + + clamp(min, max) { + // assumes min < max, componentwise + this.x = Math.max(min.x, Math.min(max.x, this.x)); + this.y = Math.max(min.y, Math.min(max.y, this.y)); + this.z = Math.max(min.z, Math.min(max.z, this.z)); + return this; + } + + clampScalar(minVal, maxVal) { + this.x = Math.max(minVal, Math.min(maxVal, this.x)); + this.y = Math.max(minVal, Math.min(maxVal, this.y)); + this.z = Math.max(minVal, Math.min(maxVal, this.z)); + return this; + } + + clampLength(min, max) { + const length = this.length(); + return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length))); + } + + floor() { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + this.z = Math.floor(this.z); + return this; + } + + ceil() { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + this.z = Math.ceil(this.z); + return this; + } + + round() { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + this.z = Math.round(this.z); + return this; + } + + roundToZero() { + 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); + return this; + } + + negate() { + this.x = -this.x; + this.y = -this.y; + this.z = -this.z; + return this; + } + + dot(v) { + return this.x * v.x + this.y * v.y + this.z * v.z; + } // TODO lengthSquared? + + + lengthSq() { + return this.x * this.x + this.y * this.y + this.z * this.z; + } + + length() { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + } + + manhattanLength() { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z); + } + + normalize() { + return this.divideScalar(this.length() || 1); + } + + setLength(length) { + return this.normalize().multiplyScalar(length); + } + + lerp(v, alpha) { + this.x += (v.x - this.x) * alpha; + this.y += (v.y - this.y) * alpha; + this.z += (v.z - this.z) * alpha; + return this; + } + + lerpVectors(v1, v2, alpha) { + this.x = v1.x + (v2.x - v1.x) * alpha; + this.y = v1.y + (v2.y - v1.y) * alpha; + this.z = v1.z + (v2.z - v1.z) * alpha; + return this; + } + + cross(v, w) { + if (w !== undefined) { + console.warn('THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.'); + return this.crossVectors(v, w); + } + + return this.crossVectors(this, v); + } + + crossVectors(a, b) { + const ax = a.x, + ay = a.y, + az = a.z; + const bx = b.x, + by = b.y, + bz = b.z; + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + return this; + } + + projectOnVector(v) { + const denominator = v.lengthSq(); + if (denominator === 0) return this.set(0, 0, 0); + const scalar = v.dot(this) / denominator; + return this.copy(v).multiplyScalar(scalar); + } + + projectOnPlane(planeNormal) { + _vector$c.copy(this).projectOnVector(planeNormal); + + return this.sub(_vector$c); + } + + reflect(normal) { + // reflect incident vector off plane orthogonal to normal + // normal is assumed to have unit length + return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal))); + } + + angleTo(v) { + const denominator = Math.sqrt(this.lengthSq() * v.lengthSq()); + if (denominator === 0) return Math.PI / 2; + const theta = this.dot(v) / denominator; // clamp, to handle numerical problems + + return Math.acos(clamp(theta, -1, 1)); + } + + distanceTo(v) { + return Math.sqrt(this.distanceToSquared(v)); + } + + distanceToSquared(v) { + const dx = this.x - v.x, + dy = this.y - v.y, + dz = this.z - v.z; + return dx * dx + dy * dy + dz * dz; + } + + manhattanDistanceTo(v) { + return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z); + } + + setFromSpherical(s) { + return this.setFromSphericalCoords(s.radius, s.phi, s.theta); + } + + setFromSphericalCoords(radius, phi, theta) { + const sinPhiRadius = Math.sin(phi) * radius; + this.x = sinPhiRadius * Math.sin(theta); + this.y = Math.cos(phi) * radius; + this.z = sinPhiRadius * Math.cos(theta); + return this; + } + + setFromCylindrical(c) { + return this.setFromCylindricalCoords(c.radius, c.theta, c.y); + } + + setFromCylindricalCoords(radius, theta, y) { + this.x = radius * Math.sin(theta); + this.y = y; + this.z = radius * Math.cos(theta); + return this; + } + + setFromMatrixPosition(m) { + const e = m.elements; + this.x = e[12]; + this.y = e[13]; + this.z = e[14]; + return this; + } + + setFromMatrixScale(m) { + const sx = this.setFromMatrixColumn(m, 0).length(); + const sy = this.setFromMatrixColumn(m, 1).length(); + const sz = this.setFromMatrixColumn(m, 2).length(); + this.x = sx; + this.y = sy; + this.z = sz; + return this; + } + + setFromMatrixColumn(m, index) { + return this.fromArray(m.elements, index * 4); + } + + setFromMatrix3Column(m, index) { + return this.fromArray(m.elements, index * 3); + } + + equals(v) { + return v.x === this.x && v.y === this.y && v.z === this.z; + } + + fromArray(array, offset = 0) { + this.x = array[offset]; + this.y = array[offset + 1]; + this.z = array[offset + 2]; + return this; + } + + toArray(array = [], offset = 0) { + array[offset] = this.x; + array[offset + 1] = this.y; + array[offset + 2] = this.z; + return array; + } + + fromBufferAttribute(attribute, index, offset) { + if (offset !== undefined) { + console.warn('THREE.Vector3: offset has been removed from .fromBufferAttribute().'); + } + + this.x = attribute.getX(index); + this.y = attribute.getY(index); + this.z = attribute.getZ(index); + return this; + } + + random() { + this.x = Math.random(); + this.y = Math.random(); + this.z = Math.random(); + return this; + } + + } + + Vector3.prototype.isVector3 = true; + + const _vector$c = /*@__PURE__*/new Vector3(); + + const _quaternion$4 = /*@__PURE__*/new Quaternion(); + + class Box3 { + constructor(min = new Vector3(+Infinity, +Infinity, +Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) { + this.min = min; + this.max = max; + } + + set(min, max) { + this.min.copy(min); + this.max.copy(max); + return this; + } + + setFromArray(array) { + let minX = +Infinity; + let minY = +Infinity; + let minZ = +Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + let maxZ = -Infinity; + + for (let i = 0, l = array.length; i < l; i += 3) { + const x = array[i]; + const y = array[i + 1]; + const z = array[i + 2]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (z < minZ) minZ = z; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + if (z > maxZ) maxZ = z; + } + + this.min.set(minX, minY, minZ); + this.max.set(maxX, maxY, maxZ); + return this; + } + + setFromBufferAttribute(attribute) { + let minX = +Infinity; + let minY = +Infinity; + let minZ = +Infinity; + let maxX = -Infinity; + let maxY = -Infinity; + let maxZ = -Infinity; + + for (let i = 0, l = attribute.count; i < l; i++) { + const x = attribute.getX(i); + const y = attribute.getY(i); + const z = attribute.getZ(i); + if (x < minX) minX = x; + if (y < minY) minY = y; + if (z < minZ) minZ = z; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + if (z > maxZ) maxZ = z; + } + + this.min.set(minX, minY, minZ); + this.max.set(maxX, maxY, maxZ); + return this; + } + + setFromPoints(points) { + this.makeEmpty(); + + for (let i = 0, il = points.length; i < il; i++) { + this.expandByPoint(points[i]); + } + + return this; + } + + setFromCenterAndSize(center, size) { + const halfSize = _vector$b.copy(size).multiplyScalar(0.5); + + this.min.copy(center).sub(halfSize); + this.max.copy(center).add(halfSize); + return this; + } + + setFromObject(object) { + this.makeEmpty(); + return this.expandByObject(object); + } + + clone() { + return new this.constructor().copy(this); + } + + copy(box) { + this.min.copy(box.min); + this.max.copy(box.max); + return this; + } + + makeEmpty() { + this.min.x = this.min.y = this.min.z = +Infinity; + this.max.x = this.max.y = this.max.z = -Infinity; + return this; + } + + isEmpty() { + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z; + } + + getCenter(target) { + return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5); + } + + getSize(target) { + return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min); + } + + expandByPoint(point) { + this.min.min(point); + this.max.max(point); + return this; + } + + expandByVector(vector) { + this.min.sub(vector); + this.max.add(vector); + return this; + } + + expandByScalar(scalar) { + this.min.addScalar(-scalar); + this.max.addScalar(scalar); + return this; + } + + expandByObject(object) { + // Computes the world-axis-aligned bounding box of an object (including its children), + // accounting for both the object's, and children's, world transforms + object.updateWorldMatrix(false, false); + const geometry = object.geometry; + + if (geometry !== undefined) { + if (geometry.boundingBox === null) { + geometry.computeBoundingBox(); + } + + _box$3.copy(geometry.boundingBox); + + _box$3.applyMatrix4(object.matrixWorld); + + this.union(_box$3); + } + + const children = object.children; + + for (let i = 0, l = children.length; i < l; i++) { + this.expandByObject(children[i]); + } + + return this; + } + + containsPoint(point) { + return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true; + } + + containsBox(box) { + return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z; + } + + getParameter(point, target) { + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z)); + } + + intersectsBox(box) { + // using 6 splitting planes to rule out intersections. + return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true; + } + + intersectsSphere(sphere) { + // Find the point on the AABB closest to the sphere center. + this.clampPoint(sphere.center, _vector$b); // If that point is inside the sphere, the AABB and sphere intersect. + + return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius; + } + + intersectsPlane(plane) { + // We compute the minimum and maximum dot product values. If those values + // are on the same side (back or front) of the plane, then there is no intersection. + let min, max; + + if (plane.normal.x > 0) { + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + } else { + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + } + + if (plane.normal.y > 0) { + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + } else { + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + } + + if (plane.normal.z > 0) { + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + } else { + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + } + + return min <= -plane.constant && max >= -plane.constant; + } + + intersectsTriangle(triangle) { + if (this.isEmpty()) { + return false; + } // compute box center and extents + + + this.getCenter(_center); + + _extents.subVectors(this.max, _center); // translate triangle to aabb origin + + + _v0$2.subVectors(triangle.a, _center); + + _v1$7.subVectors(triangle.b, _center); + + _v2$3.subVectors(triangle.c, _center); // compute edge vectors for triangle + + + _f0.subVectors(_v1$7, _v0$2); + + _f1.subVectors(_v2$3, _v1$7); + + _f2.subVectors(_v0$2, _v2$3); // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb + // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation + // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) + + + let axes = [0, -_f0.z, _f0.y, 0, -_f1.z, _f1.y, 0, -_f2.z, _f2.y, _f0.z, 0, -_f0.x, _f1.z, 0, -_f1.x, _f2.z, 0, -_f2.x, -_f0.y, _f0.x, 0, -_f1.y, _f1.x, 0, -_f2.y, _f2.x, 0]; + + if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) { + return false; + } // test 3 face normals from the aabb + + + axes = [1, 0, 0, 0, 1, 0, 0, 0, 1]; + + if (!satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents)) { + return false; + } // finally testing the face normal of the triangle + // use already existing triangle edge vectors here + + + _triangleNormal.crossVectors(_f0, _f1); + + axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z]; + return satForAxes(axes, _v0$2, _v1$7, _v2$3, _extents); + } + + clampPoint(point, target) { + return target.copy(point).clamp(this.min, this.max); + } + + distanceToPoint(point) { + const clampedPoint = _vector$b.copy(point).clamp(this.min, this.max); + + return clampedPoint.sub(point).length(); + } + + getBoundingSphere(target) { + this.getCenter(target.center); + target.radius = this.getSize(_vector$b).length() * 0.5; + return target; + } + + intersect(box) { + this.min.max(box.min); + this.max.min(box.max); // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. + + if (this.isEmpty()) this.makeEmpty(); + return this; + } + + union(box) { + this.min.min(box.min); + this.max.max(box.max); + return this; + } + + applyMatrix4(matrix) { + // transform of empty box is an empty box. + if (this.isEmpty()) return this; // NOTE: I am using a binary pattern to specify all 2^3 combinations below + + _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); // 000 + + + _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); // 001 + + + _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); // 010 + + + _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); // 011 + + + _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); // 100 + + + _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); // 101 + + + _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); // 110 + + + _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); // 111 + + + this.setFromPoints(_points); + return this; + } + + translate(offset) { + this.min.add(offset); + this.max.add(offset); + return this; + } + + equals(box) { + return box.min.equals(this.min) && box.max.equals(this.max); + } + + } + + Box3.prototype.isBox3 = true; + const _points = [/*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3(), /*@__PURE__*/new Vector3()]; + + const _vector$b = /*@__PURE__*/new Vector3(); + + const _box$3 = /*@__PURE__*/new Box3(); // triangle centered vertices + + + const _v0$2 = /*@__PURE__*/new Vector3(); + + const _v1$7 = /*@__PURE__*/new Vector3(); + + const _v2$3 = /*@__PURE__*/new Vector3(); // triangle edge vectors + + + const _f0 = /*@__PURE__*/new Vector3(); + + const _f1 = /*@__PURE__*/new Vector3(); + + const _f2 = /*@__PURE__*/new Vector3(); + + const _center = /*@__PURE__*/new Vector3(); + + const _extents = /*@__PURE__*/new Vector3(); + + const _triangleNormal = /*@__PURE__*/new Vector3(); + + const _testAxis = /*@__PURE__*/new Vector3(); + + function satForAxes(axes, v0, v1, v2, extents) { + for (let i = 0, j = axes.length - 3; i <= j; i += 3) { + _testAxis.fromArray(axes, i); // project the aabb onto the seperating axis + + + const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z); // project all 3 vertices of the triangle onto the seperating axis + + const p0 = v0.dot(_testAxis); + const p1 = v1.dot(_testAxis); + const p2 = v2.dot(_testAxis); // actual test, basically see if either of the most extreme of the triangle points intersects r + + if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) { + // points of the projected triangle are outside the projected half-length of the aabb + // the axis is seperating and we can exit + return false; + } + } + + return true; + } + + const _box$2 = /*@__PURE__*/new Box3(); + + const _v1$6 = /*@__PURE__*/new Vector3(); + + const _toFarthestPoint = /*@__PURE__*/new Vector3(); + + const _toPoint = /*@__PURE__*/new Vector3(); + + class Sphere { + constructor(center = new Vector3(), radius = -1) { + this.center = center; + this.radius = radius; + } + + set(center, radius) { + this.center.copy(center); + this.radius = radius; + return this; + } + + setFromPoints(points, optionalCenter) { + const center = this.center; + + if (optionalCenter !== undefined) { + center.copy(optionalCenter); + } else { + _box$2.setFromPoints(points).getCenter(center); + } + + let maxRadiusSq = 0; + + for (let i = 0, il = points.length; i < il; i++) { + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i])); + } + + this.radius = Math.sqrt(maxRadiusSq); + return this; + } + + copy(sphere) { + this.center.copy(sphere.center); + this.radius = sphere.radius; + return this; + } + + isEmpty() { + return this.radius < 0; + } + + makeEmpty() { + this.center.set(0, 0, 0); + this.radius = -1; + return this; + } + + containsPoint(point) { + return point.distanceToSquared(this.center) <= this.radius * this.radius; + } + + distanceToPoint(point) { + return point.distanceTo(this.center) - this.radius; + } + + intersectsSphere(sphere) { + const radiusSum = this.radius + sphere.radius; + return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum; + } + + intersectsBox(box) { + return box.intersectsSphere(this); + } + + intersectsPlane(plane) { + return Math.abs(plane.distanceToPoint(this.center)) <= this.radius; + } + + clampPoint(point, target) { + const deltaLengthSq = this.center.distanceToSquared(point); + target.copy(point); + + if (deltaLengthSq > this.radius * this.radius) { + target.sub(this.center).normalize(); + target.multiplyScalar(this.radius).add(this.center); + } + + return target; + } + + getBoundingBox(target) { + if (this.isEmpty()) { + // Empty sphere produces empty bounding box + target.makeEmpty(); + return target; + } + + target.set(this.center, this.center); + target.expandByScalar(this.radius); + return target; + } + + applyMatrix4(matrix) { + this.center.applyMatrix4(matrix); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + return this; + } + + translate(offset) { + this.center.add(offset); + return this; + } + + expandByPoint(point) { + // from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671 + _toPoint.subVectors(point, this.center); + + const lengthSq = _toPoint.lengthSq(); + + if (lengthSq > this.radius * this.radius) { + const length = Math.sqrt(lengthSq); + const missingRadiusHalf = (length - this.radius) * 0.5; // Nudge this sphere towards the target point. Add half the missing distance to radius, + // and the other half to position. This gives a tighter enclosure, instead of if + // the whole missing distance were just added to radius. + + this.center.add(_toPoint.multiplyScalar(missingRadiusHalf / length)); + this.radius += missingRadiusHalf; + } + + return this; + } + + union(sphere) { + // from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769 + // To enclose another sphere into this sphere, we only need to enclose two points: + // 1) Enclose the farthest point on the other sphere into this sphere. + // 2) Enclose the opposite point of the farthest point into this sphere. + _toFarthestPoint.subVectors(sphere.center, this.center).normalize().multiplyScalar(sphere.radius); + + this.expandByPoint(_v1$6.copy(sphere.center).add(_toFarthestPoint)); + this.expandByPoint(_v1$6.copy(sphere.center).sub(_toFarthestPoint)); + return this; + } + + equals(sphere) { + return sphere.center.equals(this.center) && sphere.radius === this.radius; + } + + clone() { + return new this.constructor().copy(this); + } + + } + + const _vector$a = /*@__PURE__*/new Vector3(); + + const _segCenter = /*@__PURE__*/new Vector3(); + + const _segDir = /*@__PURE__*/new Vector3(); + + const _diff = /*@__PURE__*/new Vector3(); + + const _edge1 = /*@__PURE__*/new Vector3(); + + const _edge2 = /*@__PURE__*/new Vector3(); + + const _normal$1 = /*@__PURE__*/new Vector3(); + + class Ray { + constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) { + this.origin = origin; + this.direction = direction; + } + + set(origin, direction) { + this.origin.copy(origin); + this.direction.copy(direction); + return this; + } + + copy(ray) { + this.origin.copy(ray.origin); + this.direction.copy(ray.direction); + return this; + } + + at(t, target) { + return target.copy(this.direction).multiplyScalar(t).add(this.origin); + } + + lookAt(v) { + this.direction.copy(v).sub(this.origin).normalize(); + return this; + } + + recast(t) { + this.origin.copy(this.at(t, _vector$a)); + return this; + } + + closestPointToPoint(point, target) { + target.subVectors(point, this.origin); + const directionDistance = target.dot(this.direction); + + if (directionDistance < 0) { + return target.copy(this.origin); + } + + return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin); + } + + distanceToPoint(point) { + return Math.sqrt(this.distanceSqToPoint(point)); + } + + distanceSqToPoint(point) { + const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction); // point behind the ray + + + if (directionDistance < 0) { + return this.origin.distanceToSquared(point); + } + + _vector$a.copy(this.direction).multiplyScalar(directionDistance).add(this.origin); + + return _vector$a.distanceToSquared(point); + } + + distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) { + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h + // It returns the min distance between the ray and the segment + // defined by v0 and v1 + // It can also set two optional targets : + // - The closest point on the ray + // - The closest point on the segment + _segCenter.copy(v0).add(v1).multiplyScalar(0.5); + + _segDir.copy(v1).sub(v0).normalize(); + + _diff.copy(this.origin).sub(_segCenter); + + const segExtent = v0.distanceTo(v1) * 0.5; + const a01 = -this.direction.dot(_segDir); + + const b0 = _diff.dot(this.direction); + + const b1 = -_diff.dot(_segDir); + + const c = _diff.lengthSq(); + + const det = Math.abs(1 - a01 * a01); + let s0, s1, sqrDist, extDet; + + if (det > 0) { + // The ray and segment are not parallel. + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + + if (s0 >= 0) { + if (s1 >= -extDet) { + if (s1 <= extDet) { + // region 0 + // Minimum at interior points of ray and segment. + const invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c; + } else { + // region 1 + s1 = segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } else { + // region 5 + s1 = -segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } else { + if (s1 <= -extDet) { + // region 4 + s0 = Math.max(0, -(-a01 * segExtent + b0)); + s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } else if (s1 <= extDet) { + // region 3 + s0 = 0; + s1 = Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = s1 * (s1 + 2 * b1) + c; + } else { + // region 2 + s0 = Math.max(0, -(a01 * segExtent + b0)); + s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + } + } else { + // Ray and segment are parallel. + s1 = a01 > 0 ? -segExtent : segExtent; + s0 = Math.max(0, -(a01 * s1 + b0)); + sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c; + } + + if (optionalPointOnRay) { + optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin); + } + + if (optionalPointOnSegment) { + optionalPointOnSegment.copy(_segDir).multiplyScalar(s1).add(_segCenter); + } + + return sqrDist; + } + + intersectSphere(sphere, target) { + _vector$a.subVectors(sphere.center, this.origin); + + const tca = _vector$a.dot(this.direction); + + const d2 = _vector$a.dot(_vector$a) - tca * tca; + const radius2 = sphere.radius * sphere.radius; + if (d2 > radius2) return null; + const thc = Math.sqrt(radius2 - d2); // t0 = first intersect point - entrance on front of sphere + + const t0 = tca - thc; // t1 = second intersect point - exit point on back of sphere + + const t1 = tca + thc; // test to see if both t0 and t1 are behind the ray - if so, return null + + if (t0 < 0 && t1 < 0) return null; // test to see if t0 is behind the ray: + // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, + // in order to always return an intersect point that is in front of the ray. + + if (t0 < 0) return this.at(t1, target); // else t0 is in front of the ray, so return the first collision point scaled by t0 + + return this.at(t0, target); + } + + intersectsSphere(sphere) { + return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius; + } + + distanceToPlane(plane) { + const denominator = plane.normal.dot(this.direction); + + if (denominator === 0) { + // line is coplanar, return origin + if (plane.distanceToPoint(this.origin) === 0) { + return 0; + } // Null is preferable to undefined since undefined means.... it is undefined + + + return null; + } + + const t = -(this.origin.dot(plane.normal) + plane.constant) / denominator; // Return if the ray never intersects the plane + + return t >= 0 ? t : null; + } + + intersectPlane(plane, target) { + const t = this.distanceToPlane(plane); + + if (t === null) { + return null; + } + + return this.at(t, target); + } + + intersectsPlane(plane) { + // check if the ray lies on the plane first + const distToPoint = plane.distanceToPoint(this.origin); + + if (distToPoint === 0) { + return true; + } + + const denominator = plane.normal.dot(this.direction); + + if (denominator * distToPoint < 0) { + return true; + } // ray origin is behind the plane (and is pointing behind it) + + + return false; + } + + intersectBox(box, target) { + let tmin, tmax, tymin, tymax, tzmin, tzmax; + const invdirx = 1 / this.direction.x, + invdiry = 1 / this.direction.y, + invdirz = 1 / this.direction.z; + const origin = this.origin; + + if (invdirx >= 0) { + tmin = (box.min.x - origin.x) * invdirx; + tmax = (box.max.x - origin.x) * invdirx; + } else { + tmin = (box.max.x - origin.x) * invdirx; + tmax = (box.min.x - origin.x) * invdirx; + } + + if (invdiry >= 0) { + tymin = (box.min.y - origin.y) * invdiry; + tymax = (box.max.y - origin.y) * invdiry; + } else { + tymin = (box.max.y - origin.y) * invdiry; + tymax = (box.min.y - origin.y) * invdiry; + } + + if (tmin > tymax || tymin > tmax) return null; // These lines also handle the case where tmin or tmax is NaN + // (result of 0 * Infinity). x !== x returns true if x is NaN + + if (tymin > tmin || tmin !== tmin) tmin = tymin; + if (tymax < tmax || tmax !== tmax) tmax = tymax; + + if (invdirz >= 0) { + tzmin = (box.min.z - origin.z) * invdirz; + tzmax = (box.max.z - origin.z) * invdirz; + } else { + tzmin = (box.max.z - origin.z) * invdirz; + tzmax = (box.min.z - origin.z) * invdirz; + } + + if (tmin > tzmax || tzmin > tmax) return null; + if (tzmin > tmin || tmin !== tmin) tmin = tzmin; + if (tzmax < tmax || tmax !== tmax) tmax = tzmax; //return point closest to the ray (positive side) + + if (tmax < 0) return null; + return this.at(tmin >= 0 ? tmin : tmax, target); + } + + intersectsBox(box) { + return this.intersectBox(box, _vector$a) !== null; + } + + intersectTriangle(a, b, c, backfaceCulling, target) { + // Compute the offset origin, edges, and normal. + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h + _edge1.subVectors(b, a); + + _edge2.subVectors(c, a); + + _normal$1.crossVectors(_edge1, _edge2); // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, + // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by + // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) + // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) + // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) + + + let DdN = this.direction.dot(_normal$1); + let sign; + + if (DdN > 0) { + if (backfaceCulling) return null; + sign = 1; + } else if (DdN < 0) { + sign = -1; + DdN = -DdN; + } else { + return null; + } + + _diff.subVectors(this.origin, a); + + const DdQxE2 = sign * this.direction.dot(_edge2.crossVectors(_diff, _edge2)); // b1 < 0, no intersection + + if (DdQxE2 < 0) { + return null; + } + + const DdE1xQ = sign * this.direction.dot(_edge1.cross(_diff)); // b2 < 0, no intersection + + if (DdE1xQ < 0) { + return null; + } // b1+b2 > 1, no intersection + + + if (DdQxE2 + DdE1xQ > DdN) { + return null; + } // Line intersects triangle, check if ray does. + + + const QdN = -sign * _diff.dot(_normal$1); // t < 0, no intersection + + + if (QdN < 0) { + return null; + } // Ray intersects triangle. + + + return this.at(QdN / DdN, target); + } + + applyMatrix4(matrix4) { + this.origin.applyMatrix4(matrix4); + this.direction.transformDirection(matrix4); + return this; + } + + equals(ray) { + return ray.origin.equals(this.origin) && ray.direction.equals(this.direction); + } + + clone() { + return new this.constructor().copy(this); + } + + } + + class Matrix4 { + constructor() { + this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; + + if (arguments.length > 0) { + console.error('THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.'); + } + } + + set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) { + const te = this.elements; + te[0] = n11; + te[4] = n12; + te[8] = n13; + te[12] = n14; + te[1] = n21; + te[5] = n22; + te[9] = n23; + te[13] = n24; + te[2] = n31; + te[6] = n32; + te[10] = n33; + te[14] = n34; + te[3] = n41; + te[7] = n42; + te[11] = n43; + te[15] = n44; + return this; + } + + identity() { + this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + return this; + } + + clone() { + return new Matrix4().fromArray(this.elements); + } + + copy(m) { + const te = this.elements; + const me = m.elements; + te[0] = me[0]; + te[1] = me[1]; + te[2] = me[2]; + te[3] = me[3]; + te[4] = me[4]; + te[5] = me[5]; + te[6] = me[6]; + te[7] = me[7]; + te[8] = me[8]; + te[9] = me[9]; + te[10] = me[10]; + te[11] = me[11]; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; + te[15] = me[15]; + return this; + } + + copyPosition(m) { + const te = this.elements, + me = m.elements; + te[12] = me[12]; + te[13] = me[13]; + te[14] = me[14]; + return this; + } + + setFromMatrix3(m) { + const me = m.elements; + this.set(me[0], me[3], me[6], 0, me[1], me[4], me[7], 0, me[2], me[5], me[8], 0, 0, 0, 0, 1); + return this; + } + + extractBasis(xAxis, yAxis, zAxis) { + xAxis.setFromMatrixColumn(this, 0); + yAxis.setFromMatrixColumn(this, 1); + zAxis.setFromMatrixColumn(this, 2); + return this; + } + + makeBasis(xAxis, yAxis, zAxis) { + this.set(xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1); + return this; + } + + extractRotation(m) { + // this method does not support reflection matrices + const te = this.elements; + const me = m.elements; + + const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length(); + + const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length(); + + const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length(); + + te[0] = me[0] * scaleX; + te[1] = me[1] * scaleX; + te[2] = me[2] * scaleX; + te[3] = 0; + te[4] = me[4] * scaleY; + te[5] = me[5] * scaleY; + te[6] = me[6] * scaleY; + te[7] = 0; + te[8] = me[8] * scaleZ; + te[9] = me[9] * scaleZ; + te[10] = me[10] * scaleZ; + te[11] = 0; + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; + return this; + } + + makeRotationFromEuler(euler) { + if (!(euler && euler.isEuler)) { + console.error('THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.'); + } + + const te = this.elements; + const x = euler.x, + y = euler.y, + z = euler.z; + const a = Math.cos(x), + b = Math.sin(x); + const c = Math.cos(y), + d = Math.sin(y); + const e = Math.cos(z), + f = Math.sin(z); + + if (euler.order === 'XYZ') { + const ae = a * e, + af = a * f, + be = b * e, + bf = b * f; + te[0] = c * e; + te[4] = -c * f; + te[8] = d; + te[1] = af + be * d; + te[5] = ae - bf * d; + te[9] = -b * c; + te[2] = bf - ae * d; + te[6] = be + af * d; + te[10] = a * c; + } else if (euler.order === 'YXZ') { + const ce = c * e, + cf = c * f, + de = d * e, + df = d * f; + te[0] = ce + df * b; + te[4] = de * b - cf; + te[8] = a * d; + te[1] = a * f; + te[5] = a * e; + te[9] = -b; + te[2] = cf * b - de; + te[6] = df + ce * b; + te[10] = a * c; + } else if (euler.order === 'ZXY') { + const ce = c * e, + cf = c * f, + de = d * e, + df = d * f; + te[0] = ce - df * b; + te[4] = -a * f; + te[8] = de + cf * b; + te[1] = cf + de * b; + te[5] = a * e; + te[9] = df - ce * b; + te[2] = -a * d; + te[6] = b; + te[10] = a * c; + } else if (euler.order === 'ZYX') { + const ae = a * e, + af = a * f, + be = b * e, + bf = b * f; + te[0] = c * e; + te[4] = be * d - af; + te[8] = ae * d + bf; + te[1] = c * f; + te[5] = bf * d + ae; + te[9] = af * d - be; + te[2] = -d; + te[6] = b * c; + te[10] = a * c; + } else if (euler.order === 'YZX') { + const ac = a * c, + ad = a * d, + bc = b * c, + bd = b * d; + te[0] = c * e; + te[4] = bd - ac * f; + te[8] = bc * f + ad; + te[1] = f; + te[5] = a * e; + te[9] = -b * e; + te[2] = -d * e; + te[6] = ad * f + bc; + te[10] = ac - bd * f; + } else if (euler.order === 'XZY') { + const ac = a * c, + ad = a * d, + bc = b * c, + bd = b * d; + te[0] = c * e; + te[4] = -f; + te[8] = d * e; + te[1] = ac * f + bd; + te[5] = a * e; + te[9] = ad * f - bc; + te[2] = bc * f - ad; + te[6] = b * e; + te[10] = bd * f + ac; + } // bottom row + + + te[3] = 0; + te[7] = 0; + te[11] = 0; // last column + + te[12] = 0; + te[13] = 0; + te[14] = 0; + te[15] = 1; + return this; + } + + makeRotationFromQuaternion(q) { + return this.compose(_zero, q, _one); + } + + lookAt(eye, target, up) { + const te = this.elements; + + _z.subVectors(eye, target); + + if (_z.lengthSq() === 0) { + // eye and target are in the same position + _z.z = 1; + } + + _z.normalize(); + + _x.crossVectors(up, _z); + + if (_x.lengthSq() === 0) { + // up and z are parallel + if (Math.abs(up.z) === 1) { + _z.x += 0.0001; + } else { + _z.z += 0.0001; + } + + _z.normalize(); + + _x.crossVectors(up, _z); + } + + _x.normalize(); + + _y.crossVectors(_z, _x); + + te[0] = _x.x; + te[4] = _y.x; + te[8] = _z.x; + te[1] = _x.y; + te[5] = _y.y; + te[9] = _z.y; + te[2] = _x.z; + te[6] = _y.z; + te[10] = _z.z; + return this; + } + + multiply(m, n) { + if (n !== undefined) { + console.warn('THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.'); + return this.multiplyMatrices(m, n); + } + + return this.multiplyMatrices(this, m); + } + + premultiply(m) { + return this.multiplyMatrices(m, this); + } + + multiplyMatrices(a, b) { + const ae = a.elements; + const be = b.elements; + const te = this.elements; + const a11 = ae[0], + a12 = ae[4], + a13 = ae[8], + a14 = ae[12]; + const a21 = ae[1], + a22 = ae[5], + a23 = ae[9], + a24 = ae[13]; + const a31 = ae[2], + a32 = ae[6], + a33 = ae[10], + a34 = ae[14]; + const a41 = ae[3], + a42 = ae[7], + a43 = ae[11], + a44 = ae[15]; + const b11 = be[0], + b12 = be[4], + b13 = be[8], + b14 = be[12]; + const b21 = be[1], + b22 = be[5], + b23 = be[9], + b24 = be[13]; + const b31 = be[2], + b32 = be[6], + b33 = be[10], + b34 = be[14]; + const b41 = be[3], + b42 = be[7], + b43 = be[11], + b44 = be[15]; + te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + return this; + } + + multiplyScalar(s) { + const te = this.elements; + te[0] *= s; + te[4] *= s; + te[8] *= s; + te[12] *= s; + te[1] *= s; + te[5] *= s; + te[9] *= s; + te[13] *= s; + te[2] *= s; + te[6] *= s; + te[10] *= s; + te[14] *= s; + te[3] *= s; + te[7] *= s; + te[11] *= s; + te[15] *= s; + return this; + } + + determinant() { + const te = this.elements; + const n11 = te[0], + n12 = te[4], + n13 = te[8], + n14 = te[12]; + const n21 = te[1], + n22 = te[5], + n23 = te[9], + n24 = te[13]; + const n31 = te[2], + n32 = te[6], + n33 = te[10], + n34 = te[14]; + const n41 = te[3], + n42 = te[7], + n43 = te[11], + n44 = te[15]; //TODO: make this more efficient + //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) + + return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31); + } + + transpose() { + const te = this.elements; + let tmp; + tmp = te[1]; + te[1] = te[4]; + te[4] = tmp; + tmp = te[2]; + te[2] = te[8]; + te[8] = tmp; + tmp = te[6]; + te[6] = te[9]; + te[9] = tmp; + tmp = te[3]; + te[3] = te[12]; + te[12] = tmp; + tmp = te[7]; + te[7] = te[13]; + te[13] = tmp; + tmp = te[11]; + te[11] = te[14]; + te[14] = tmp; + return this; + } + + setPosition(x, y, z) { + const te = this.elements; + + if (x.isVector3) { + te[12] = x.x; + te[13] = x.y; + te[14] = x.z; + } else { + te[12] = x; + te[13] = y; + te[14] = z; + } + + return this; + } + + invert() { + // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + const te = this.elements, + n11 = te[0], + n21 = te[1], + n31 = te[2], + n41 = te[3], + n12 = te[4], + n22 = te[5], + n32 = te[6], + n42 = te[7], + n13 = te[8], + n23 = te[9], + n33 = te[10], + n43 = te[11], + n14 = te[12], + n24 = te[13], + n34 = te[14], + n44 = te[15], + t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, + t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, + t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, + t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + const detInv = 1 / det; + te[0] = t11 * detInv; + te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv; + te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv; + te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv; + te[4] = t12 * detInv; + te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv; + te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv; + te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv; + te[8] = t13 * detInv; + te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv; + te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv; + te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv; + te[12] = t14 * detInv; + te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv; + te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv; + te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv; + return this; + } + + scale(v) { + const te = this.elements; + const x = v.x, + y = v.y, + z = v.z; + te[0] *= x; + te[4] *= y; + te[8] *= z; + te[1] *= x; + te[5] *= y; + te[9] *= z; + te[2] *= x; + te[6] *= y; + te[10] *= z; + te[3] *= x; + te[7] *= y; + te[11] *= z; + return this; + } + + getMaxScaleOnAxis() { + const te = this.elements; + const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2]; + const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6]; + const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10]; + return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq)); + } + + makeTranslation(x, y, z) { + this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1); + return this; + } + + makeRotationX(theta) { + const c = Math.cos(theta), + s = Math.sin(theta); + this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1); + return this; + } + + makeRotationY(theta) { + const c = Math.cos(theta), + s = Math.sin(theta); + this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1); + return this; + } + + makeRotationZ(theta) { + const c = Math.cos(theta), + s = Math.sin(theta); + this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); + return this; + } + + makeRotationAxis(axis, angle) { + // Based on http://www.gamedev.net/reference/articles/article1199.asp + const c = Math.cos(angle); + const s = Math.sin(angle); + const t = 1 - c; + const x = axis.x, + y = axis.y, + z = axis.z; + const tx = t * x, + ty = t * y; + this.set(tx * x + c, tx * y - s * z, tx * z + s * y, 0, tx * y + s * z, ty * y + c, ty * z - s * x, 0, tx * z - s * y, ty * z + s * x, t * z * z + c, 0, 0, 0, 0, 1); + return this; + } + + makeScale(x, y, z) { + this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1); + return this; + } + + makeShear(xy, xz, yx, yz, zx, zy) { + this.set(1, yx, zx, 0, xy, 1, zy, 0, xz, yz, 1, 0, 0, 0, 0, 1); + return this; + } + + compose(position, quaternion, scale) { + const te = this.elements; + const x = quaternion._x, + y = quaternion._y, + z = quaternion._z, + w = quaternion._w; + const x2 = x + x, + y2 = y + y, + z2 = z + z; + const xx = x * x2, + xy = x * y2, + xz = x * z2; + const yy = y * y2, + yz = y * z2, + zz = z * z2; + const wx = w * x2, + wy = w * y2, + wz = w * z2; + const sx = scale.x, + sy = scale.y, + sz = scale.z; + te[0] = (1 - (yy + zz)) * sx; + te[1] = (xy + wz) * sx; + te[2] = (xz - wy) * sx; + te[3] = 0; + te[4] = (xy - wz) * sy; + te[5] = (1 - (xx + zz)) * sy; + te[6] = (yz + wx) * sy; + te[7] = 0; + te[8] = (xz + wy) * sz; + te[9] = (yz - wx) * sz; + te[10] = (1 - (xx + yy)) * sz; + te[11] = 0; + te[12] = position.x; + te[13] = position.y; + te[14] = position.z; + te[15] = 1; + return this; + } + + decompose(position, quaternion, scale) { + const te = this.elements; + + let sx = _v1$5.set(te[0], te[1], te[2]).length(); + + const sy = _v1$5.set(te[4], te[5], te[6]).length(); + + const sz = _v1$5.set(te[8], te[9], te[10]).length(); // if determine is negative, we need to invert one scale + + + const det = this.determinant(); + if (det < 0) sx = -sx; + position.x = te[12]; + position.y = te[13]; + position.z = te[14]; // scale the rotation part + + _m1$2.copy(this); + + const invSX = 1 / sx; + const invSY = 1 / sy; + const invSZ = 1 / sz; + _m1$2.elements[0] *= invSX; + _m1$2.elements[1] *= invSX; + _m1$2.elements[2] *= invSX; + _m1$2.elements[4] *= invSY; + _m1$2.elements[5] *= invSY; + _m1$2.elements[6] *= invSY; + _m1$2.elements[8] *= invSZ; + _m1$2.elements[9] *= invSZ; + _m1$2.elements[10] *= invSZ; + quaternion.setFromRotationMatrix(_m1$2); + scale.x = sx; + scale.y = sy; + scale.z = sz; + return this; + } + + makePerspective(left, right, top, bottom, near, far) { + if (far === undefined) { + console.warn('THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.'); + } + + const te = this.elements; + const x = 2 * near / (right - left); + const y = 2 * near / (top - bottom); + const a = (right + left) / (right - left); + const b = (top + bottom) / (top - bottom); + const c = -(far + near) / (far - near); + const d = -2 * far * near / (far - near); + te[0] = x; + te[4] = 0; + te[8] = a; + te[12] = 0; + te[1] = 0; + te[5] = y; + te[9] = b; + te[13] = 0; + te[2] = 0; + te[6] = 0; + te[10] = c; + te[14] = d; + te[3] = 0; + te[7] = 0; + te[11] = -1; + te[15] = 0; + return this; + } + + makeOrthographic(left, right, top, bottom, near, far) { + const te = this.elements; + const w = 1.0 / (right - left); + const h = 1.0 / (top - bottom); + const p = 1.0 / (far - near); + const x = (right + left) * w; + const y = (top + bottom) * h; + const z = (far + near) * p; + te[0] = 2 * w; + te[4] = 0; + te[8] = 0; + te[12] = -x; + te[1] = 0; + te[5] = 2 * h; + te[9] = 0; + te[13] = -y; + te[2] = 0; + te[6] = 0; + te[10] = -2 * p; + te[14] = -z; + te[3] = 0; + te[7] = 0; + te[11] = 0; + te[15] = 1; + return this; + } + + equals(matrix) { + const te = this.elements; + const me = matrix.elements; + + for (let i = 0; i < 16; i++) { + if (te[i] !== me[i]) return false; + } + + return true; + } + + fromArray(array, offset = 0) { + for (let i = 0; i < 16; i++) { + this.elements[i] = array[i + offset]; + } + + return this; + } + + toArray(array = [], offset = 0) { + const te = this.elements; + array[offset] = te[0]; + array[offset + 1] = te[1]; + array[offset + 2] = te[2]; + array[offset + 3] = te[3]; + array[offset + 4] = te[4]; + array[offset + 5] = te[5]; + array[offset + 6] = te[6]; + array[offset + 7] = te[7]; + array[offset + 8] = te[8]; + array[offset + 9] = te[9]; + array[offset + 10] = te[10]; + array[offset + 11] = te[11]; + array[offset + 12] = te[12]; + array[offset + 13] = te[13]; + array[offset + 14] = te[14]; + array[offset + 15] = te[15]; + return array; + } + + } + + Matrix4.prototype.isMatrix4 = true; + + const _v1$5 = /*@__PURE__*/new Vector3(); + + const _m1$2 = /*@__PURE__*/new Matrix4(); + + const _zero = /*@__PURE__*/new Vector3(0, 0, 0); + + const _one = /*@__PURE__*/new Vector3(1, 1, 1); + + const _x = /*@__PURE__*/new Vector3(); + + const _y = /*@__PURE__*/new Vector3(); + + const _z = /*@__PURE__*/new Vector3(); + + const _matrix$1 = /*@__PURE__*/new Matrix4(); + + const _quaternion$3 = /*@__PURE__*/new Quaternion(); + + class Euler { + constructor(x = 0, y = 0, z = 0, order = Euler.DefaultOrder) { + this._x = x; + this._y = y; + this._z = z; + this._order = order; + } + + get x() { + return this._x; + } + + set x(value) { + this._x = value; + + this._onChangeCallback(); + } + + get y() { + return this._y; + } + + set y(value) { + this._y = value; + + this._onChangeCallback(); + } + + get z() { + return this._z; + } + + set z(value) { + this._z = value; + + this._onChangeCallback(); + } + + get order() { + return this._order; + } + + set order(value) { + this._order = value; + + this._onChangeCallback(); + } + + set(x, y, z, order = this._order) { + this._x = x; + this._y = y; + this._z = z; + this._order = order; + + this._onChangeCallback(); + + return this; + } + + clone() { + return new this.constructor(this._x, this._y, this._z, this._order); + } + + copy(euler) { + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + + this._onChangeCallback(); + + return this; + } + + setFromRotationMatrix(m, order = this._order, update = true) { + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + const te = m.elements; + const m11 = te[0], + m12 = te[4], + m13 = te[8]; + const m21 = te[1], + m22 = te[5], + m23 = te[9]; + const m31 = te[2], + m32 = te[6], + m33 = te[10]; + + switch (order) { + case 'XYZ': + this._y = Math.asin(clamp(m13, -1, 1)); + + if (Math.abs(m13) < 0.9999999) { + this._x = Math.atan2(-m23, m33); + this._z = Math.atan2(-m12, m11); + } else { + this._x = Math.atan2(m32, m22); + this._z = 0; + } + + break; + + case 'YXZ': + this._x = Math.asin(-clamp(m23, -1, 1)); + + if (Math.abs(m23) < 0.9999999) { + this._y = Math.atan2(m13, m33); + this._z = Math.atan2(m21, m22); + } else { + this._y = Math.atan2(-m31, m11); + this._z = 0; + } + + break; + + case 'ZXY': + this._x = Math.asin(clamp(m32, -1, 1)); + + if (Math.abs(m32) < 0.9999999) { + this._y = Math.atan2(-m31, m33); + this._z = Math.atan2(-m12, m22); + } else { + this._y = 0; + this._z = Math.atan2(m21, m11); + } + + break; + + case 'ZYX': + this._y = Math.asin(-clamp(m31, -1, 1)); + + if (Math.abs(m31) < 0.9999999) { + this._x = Math.atan2(m32, m33); + this._z = Math.atan2(m21, m11); + } else { + this._x = 0; + this._z = Math.atan2(-m12, m22); + } + + break; + + case 'YZX': + this._z = Math.asin(clamp(m21, -1, 1)); + + if (Math.abs(m21) < 0.9999999) { + this._x = Math.atan2(-m23, m22); + this._y = Math.atan2(-m31, m11); + } else { + this._x = 0; + this._y = Math.atan2(m13, m33); + } + + break; + + case 'XZY': + this._z = Math.asin(-clamp(m12, -1, 1)); + + if (Math.abs(m12) < 0.9999999) { + this._x = Math.atan2(m32, m22); + this._y = Math.atan2(m13, m11); + } else { + this._x = Math.atan2(-m23, m33); + this._y = 0; + } + + break; + + default: + console.warn('THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order); + } + + this._order = order; + if (update === true) this._onChangeCallback(); + return this; + } + + setFromQuaternion(q, order, update) { + _matrix$1.makeRotationFromQuaternion(q); + + return this.setFromRotationMatrix(_matrix$1, order, update); + } + + setFromVector3(v, order = this._order) { + return this.set(v.x, v.y, v.z, order); + } + + reorder(newOrder) { + // WARNING: this discards revolution information -bhouston + _quaternion$3.setFromEuler(this); + + return this.setFromQuaternion(_quaternion$3, newOrder); + } + + equals(euler) { + return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order; + } + + fromArray(array) { + this._x = array[0]; + this._y = array[1]; + this._z = array[2]; + if (array[3] !== undefined) this._order = array[3]; + + this._onChangeCallback(); + + return this; + } + + toArray(array = [], offset = 0) { + array[offset] = this._x; + array[offset + 1] = this._y; + array[offset + 2] = this._z; + array[offset + 3] = this._order; + return array; + } + + toVector3(optionalResult) { + if (optionalResult) { + return optionalResult.set(this._x, this._y, this._z); + } else { + return new Vector3(this._x, this._y, this._z); + } + } + + _onChange(callback) { + this._onChangeCallback = callback; + return this; + } + + _onChangeCallback() {} + + } + + Euler.prototype.isEuler = true; + Euler.DefaultOrder = 'XYZ'; + Euler.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX']; + + class Layers { + constructor() { + this.mask = 1 | 0; + } + + set(channel) { + this.mask = 1 << channel | 0; + } + + enable(channel) { + this.mask |= 1 << channel | 0; + } + + enableAll() { + this.mask = 0xffffffff | 0; + } + + toggle(channel) { + this.mask ^= 1 << channel | 0; + } + + disable(channel) { + this.mask &= ~(1 << channel | 0); + } + + disableAll() { + this.mask = 0; + } + + test(layers) { + return (this.mask & layers.mask) !== 0; + } + + } + + let _object3DId = 0; + + const _v1$4 = /*@__PURE__*/new Vector3(); + + const _q1 = /*@__PURE__*/new Quaternion(); + + const _m1$1 = /*@__PURE__*/new Matrix4(); + + const _target = /*@__PURE__*/new Vector3(); + + const _position$3 = /*@__PURE__*/new Vector3(); + + const _scale$2 = /*@__PURE__*/new Vector3(); + + const _quaternion$2 = /*@__PURE__*/new Quaternion(); + + const _xAxis = /*@__PURE__*/new Vector3(1, 0, 0); + + const _yAxis = /*@__PURE__*/new Vector3(0, 1, 0); + + const _zAxis = /*@__PURE__*/new Vector3(0, 0, 1); + + const _addedEvent = { + type: 'added' + }; + const _removedEvent = { + type: 'removed' + }; + + class Object3D extends EventDispatcher { + constructor() { + super(); + Object.defineProperty(this, 'id', { + value: _object3DId++ + }); + this.uuid = generateUUID(); + this.name = ''; + this.type = 'Object3D'; + this.parent = null; + this.children = []; + this.up = Object3D.DefaultUp.clone(); + const position = new Vector3(); + const rotation = new Euler(); + const quaternion = new Quaternion(); + const scale = new Vector3(1, 1, 1); + + function onRotationChange() { + quaternion.setFromEuler(rotation, false); + } + + function onQuaternionChange() { + rotation.setFromQuaternion(quaternion, undefined, false); + } + + rotation._onChange(onRotationChange); + + quaternion._onChange(onQuaternionChange); + + Object.defineProperties(this, { + position: { + configurable: true, + enumerable: true, + value: position + }, + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + quaternion: { + configurable: true, + enumerable: true, + value: quaternion + }, + scale: { + configurable: true, + enumerable: true, + value: scale + }, + modelViewMatrix: { + value: new Matrix4() + }, + normalMatrix: { + value: new Matrix3() + } + }); + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; + this.matrixWorldNeedsUpdate = false; + this.layers = new Layers(); + this.visible = true; + this.castShadow = false; + this.receiveShadow = false; + this.frustumCulled = true; + this.renderOrder = 0; + this.animations = []; + this.userData = {}; + } + + onBeforeRender() {} + + onAfterRender() {} + + applyMatrix4(matrix) { + if (this.matrixAutoUpdate) this.updateMatrix(); + this.matrix.premultiply(matrix); + this.matrix.decompose(this.position, this.quaternion, this.scale); + } + + applyQuaternion(q) { + this.quaternion.premultiply(q); + return this; + } + + setRotationFromAxisAngle(axis, angle) { + // assumes axis is normalized + this.quaternion.setFromAxisAngle(axis, angle); + } + + setRotationFromEuler(euler) { + this.quaternion.setFromEuler(euler, true); + } + + setRotationFromMatrix(m) { + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + this.quaternion.setFromRotationMatrix(m); + } + + setRotationFromQuaternion(q) { + // assumes q is normalized + this.quaternion.copy(q); + } + + rotateOnAxis(axis, angle) { + // rotate object on axis in object space + // axis is assumed to be normalized + _q1.setFromAxisAngle(axis, angle); + + this.quaternion.multiply(_q1); + return this; + } + + rotateOnWorldAxis(axis, angle) { + // rotate object on axis in world space + // axis is assumed to be normalized + // method assumes no rotated parent + _q1.setFromAxisAngle(axis, angle); + + this.quaternion.premultiply(_q1); + return this; + } + + rotateX(angle) { + return this.rotateOnAxis(_xAxis, angle); + } + + rotateY(angle) { + return this.rotateOnAxis(_yAxis, angle); + } + + rotateZ(angle) { + return this.rotateOnAxis(_zAxis, angle); + } + + translateOnAxis(axis, distance) { + // translate object by distance along axis in object space + // axis is assumed to be normalized + _v1$4.copy(axis).applyQuaternion(this.quaternion); + + this.position.add(_v1$4.multiplyScalar(distance)); + return this; + } + + translateX(distance) { + return this.translateOnAxis(_xAxis, distance); + } + + translateY(distance) { + return this.translateOnAxis(_yAxis, distance); + } + + translateZ(distance) { + return this.translateOnAxis(_zAxis, distance); + } + + localToWorld(vector) { + return vector.applyMatrix4(this.matrixWorld); + } + + worldToLocal(vector) { + return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert()); + } + + lookAt(x, y, z) { + // This method does not support objects having non-uniformly-scaled parent(s) + if (x.isVector3) { + _target.copy(x); + } else { + _target.set(x, y, z); + } + + const parent = this.parent; + this.updateWorldMatrix(true, false); + + _position$3.setFromMatrixPosition(this.matrixWorld); + + if (this.isCamera || this.isLight) { + _m1$1.lookAt(_position$3, _target, this.up); + } else { + _m1$1.lookAt(_target, _position$3, this.up); + } + + this.quaternion.setFromRotationMatrix(_m1$1); + + if (parent) { + _m1$1.extractRotation(parent.matrixWorld); + + _q1.setFromRotationMatrix(_m1$1); + + this.quaternion.premultiply(_q1.invert()); + } + } + + add(object) { + if (arguments.length > 1) { + for (let i = 0; i < arguments.length; i++) { + this.add(arguments[i]); + } + + return this; + } + + if (object === this) { + console.error('THREE.Object3D.add: object can\'t be added as a child of itself.', object); + return this; + } + + if (object && object.isObject3D) { + if (object.parent !== null) { + object.parent.remove(object); + } + + object.parent = this; + this.children.push(object); + object.dispatchEvent(_addedEvent); + } else { + console.error('THREE.Object3D.add: object not an instance of THREE.Object3D.', object); + } + + return this; + } + + remove(object) { + if (arguments.length > 1) { + for (let i = 0; i < arguments.length; i++) { + this.remove(arguments[i]); + } + + return this; + } + + const index = this.children.indexOf(object); + + if (index !== -1) { + object.parent = null; + this.children.splice(index, 1); + object.dispatchEvent(_removedEvent); + } + + return this; + } + + removeFromParent() { + const parent = this.parent; + + if (parent !== null) { + parent.remove(this); + } + + return this; + } + + clear() { + for (let i = 0; i < this.children.length; i++) { + const object = this.children[i]; + object.parent = null; + object.dispatchEvent(_removedEvent); + } + + this.children.length = 0; + return this; + } + + attach(object) { + // adds object as a child of this, while maintaining the object's world transform + this.updateWorldMatrix(true, false); + + _m1$1.copy(this.matrixWorld).invert(); + + if (object.parent !== null) { + object.parent.updateWorldMatrix(true, false); + + _m1$1.multiply(object.parent.matrixWorld); + } + + object.applyMatrix4(_m1$1); + this.add(object); + object.updateWorldMatrix(false, true); + return this; + } + + getObjectById(id) { + return this.getObjectByProperty('id', id); + } + + getObjectByName(name) { + return this.getObjectByProperty('name', name); + } + + getObjectByProperty(name, value) { + if (this[name] === value) return this; + + for (let i = 0, l = this.children.length; i < l; i++) { + const child = this.children[i]; + const object = child.getObjectByProperty(name, value); + + if (object !== undefined) { + return object; + } + } + + return undefined; + } + + getWorldPosition(target) { + this.updateWorldMatrix(true, false); + return target.setFromMatrixPosition(this.matrixWorld); + } + + getWorldQuaternion(target) { + this.updateWorldMatrix(true, false); + this.matrixWorld.decompose(_position$3, target, _scale$2); + return target; + } + + getWorldScale(target) { + this.updateWorldMatrix(true, false); + this.matrixWorld.decompose(_position$3, _quaternion$2, target); + return target; + } + + getWorldDirection(target) { + this.updateWorldMatrix(true, false); + const e = this.matrixWorld.elements; + return target.set(e[8], e[9], e[10]).normalize(); + } + + raycast() {} + + traverse(callback) { + callback(this); + const children = this.children; + + for (let i = 0, l = children.length; i < l; i++) { + children[i].traverse(callback); + } + } + + traverseVisible(callback) { + if (this.visible === false) return; + callback(this); + const children = this.children; + + for (let i = 0, l = children.length; i < l; i++) { + children[i].traverseVisible(callback); + } + } + + traverseAncestors(callback) { + const parent = this.parent; + + if (parent !== null) { + callback(parent); + parent.traverseAncestors(callback); + } + } + + updateMatrix() { + this.matrix.compose(this.position, this.quaternion, this.scale); + this.matrixWorldNeedsUpdate = true; + } + + updateMatrixWorld(force) { + if (this.matrixAutoUpdate) this.updateMatrix(); + + if (this.matrixWorldNeedsUpdate || force) { + if (this.parent === null) { + this.matrixWorld.copy(this.matrix); + } else { + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); + } + + this.matrixWorldNeedsUpdate = false; + force = true; + } // update children + + + const children = this.children; + + for (let i = 0, l = children.length; i < l; i++) { + children[i].updateMatrixWorld(force); + } + } + + updateWorldMatrix(updateParents, updateChildren) { + const parent = this.parent; + + if (updateParents === true && parent !== null) { + parent.updateWorldMatrix(true, false); + } + + if (this.matrixAutoUpdate) this.updateMatrix(); + + if (this.parent === null) { + this.matrixWorld.copy(this.matrix); + } else { + this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix); + } // update children + + + if (updateChildren === true) { + const children = this.children; + + for (let i = 0, l = children.length; i < l; i++) { + children[i].updateWorldMatrix(false, true); + } + } + } + + toJSON(meta) { + // meta is a string when called from JSON.stringify + const isRootObject = meta === undefined || typeof meta === 'string'; + const output = {}; // meta is a hash used to collect geometries, materials. + // not providing it implies that this is the root object + // being serialized. + + if (isRootObject) { + // initialize meta obj + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {} + }; + output.metadata = { + version: 4.5, + type: 'Object', + generator: 'Object3D.toJSON' + }; + } // standard Object3D serialization + + + const object = {}; + object.uuid = this.uuid; + object.type = this.type; + if (this.name !== '') object.name = this.name; + if (this.castShadow === true) object.castShadow = true; + if (this.receiveShadow === true) object.receiveShadow = true; + if (this.visible === false) object.visible = false; + if (this.frustumCulled === false) object.frustumCulled = false; + if (this.renderOrder !== 0) object.renderOrder = this.renderOrder; + if (JSON.stringify(this.userData) !== '{}') object.userData = this.userData; + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + if (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false; // object specific properties + + if (this.isInstancedMesh) { + object.type = 'InstancedMesh'; + object.count = this.count; + object.instanceMatrix = this.instanceMatrix.toJSON(); + if (this.instanceColor !== null) object.instanceColor = this.instanceColor.toJSON(); + } // + + + function serialize(library, element) { + if (library[element.uuid] === undefined) { + library[element.uuid] = element.toJSON(meta); + } + + return element.uuid; + } + + if (this.isScene) { + if (this.background) { + if (this.background.isColor) { + object.background = this.background.toJSON(); + } else if (this.background.isTexture) { + object.background = this.background.toJSON(meta).uuid; + } + } + + if (this.environment && this.environment.isTexture) { + object.environment = this.environment.toJSON(meta).uuid; + } + } else if (this.isMesh || this.isLine || this.isPoints) { + object.geometry = serialize(meta.geometries, this.geometry); + const parameters = this.geometry.parameters; + + if (parameters !== undefined && parameters.shapes !== undefined) { + const shapes = parameters.shapes; + + if (Array.isArray(shapes)) { + for (let i = 0, l = shapes.length; i < l; i++) { + const shape = shapes[i]; + serialize(meta.shapes, shape); + } + } else { + serialize(meta.shapes, shapes); + } + } + } + + if (this.isSkinnedMesh) { + object.bindMode = this.bindMode; + object.bindMatrix = this.bindMatrix.toArray(); + + if (this.skeleton !== undefined) { + serialize(meta.skeletons, this.skeleton); + object.skeleton = this.skeleton.uuid; + } + } + + if (this.material !== undefined) { + if (Array.isArray(this.material)) { + const uuids = []; + + for (let i = 0, l = this.material.length; i < l; i++) { + uuids.push(serialize(meta.materials, this.material[i])); + } + + object.material = uuids; + } else { + object.material = serialize(meta.materials, this.material); + } + } // + + + if (this.children.length > 0) { + object.children = []; + + for (let i = 0; i < this.children.length; i++) { + object.children.push(this.children[i].toJSON(meta).object); + } + } // + + + if (this.animations.length > 0) { + object.animations = []; + + for (let i = 0; i < this.animations.length; i++) { + const animation = this.animations[i]; + object.animations.push(serialize(meta.animations, animation)); + } + } + + if (isRootObject) { + const geometries = extractFromCache(meta.geometries); + const materials = extractFromCache(meta.materials); + const textures = extractFromCache(meta.textures); + const images = extractFromCache(meta.images); + const shapes = extractFromCache(meta.shapes); + const skeletons = extractFromCache(meta.skeletons); + const animations = extractFromCache(meta.animations); + if (geometries.length > 0) output.geometries = geometries; + if (materials.length > 0) output.materials = materials; + if (textures.length > 0) output.textures = textures; + if (images.length > 0) output.images = images; + if (shapes.length > 0) output.shapes = shapes; + if (skeletons.length > 0) output.skeletons = skeletons; + if (animations.length > 0) output.animations = animations; + } + + output.object = object; + return output; // extract data from the cache hash + // remove metadata on each item + // and return as array + + function extractFromCache(cache) { + const values = []; + + for (const key in cache) { + const data = cache[key]; + delete data.metadata; + values.push(data); + } + + return values; + } + } + + clone(recursive) { + return new this.constructor().copy(this, recursive); + } + + copy(source, recursive = true) { + this.name = source.name; + this.up.copy(source.up); + this.position.copy(source.position); + this.rotation.order = source.rotation.order; + this.quaternion.copy(source.quaternion); + this.scale.copy(source.scale); + this.matrix.copy(source.matrix); + this.matrixWorld.copy(source.matrixWorld); + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + this.layers.mask = source.layers.mask; + this.visible = source.visible; + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + this.userData = JSON.parse(JSON.stringify(source.userData)); + + if (recursive === true) { + for (let i = 0; i < source.children.length; i++) { + const child = source.children[i]; + this.add(child.clone()); + } + } + + return this; + } + + } + + Object3D.DefaultUp = new Vector3(0, 1, 0); + Object3D.DefaultMatrixAutoUpdate = true; + Object3D.prototype.isObject3D = true; + + const _v0$1 = /*@__PURE__*/new Vector3(); + + const _v1$3 = /*@__PURE__*/new Vector3(); + + const _v2$2 = /*@__PURE__*/new Vector3(); + + const _v3$1 = /*@__PURE__*/new Vector3(); + + const _vab = /*@__PURE__*/new Vector3(); + + const _vac = /*@__PURE__*/new Vector3(); + + const _vbc = /*@__PURE__*/new Vector3(); + + const _vap = /*@__PURE__*/new Vector3(); + + const _vbp = /*@__PURE__*/new Vector3(); + + const _vcp = /*@__PURE__*/new Vector3(); + + class Triangle { + constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) { + this.a = a; + this.b = b; + this.c = c; + } + + static getNormal(a, b, c, target) { + target.subVectors(c, b); + + _v0$1.subVectors(a, b); + + target.cross(_v0$1); + const targetLengthSq = target.lengthSq(); + + if (targetLengthSq > 0) { + return target.multiplyScalar(1 / Math.sqrt(targetLengthSq)); + } + + return target.set(0, 0, 0); + } // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + + + static getBarycoord(point, a, b, c, target) { + _v0$1.subVectors(c, a); + + _v1$3.subVectors(b, a); + + _v2$2.subVectors(point, a); + + const dot00 = _v0$1.dot(_v0$1); + + const dot01 = _v0$1.dot(_v1$3); + + const dot02 = _v0$1.dot(_v2$2); + + const dot11 = _v1$3.dot(_v1$3); + + const dot12 = _v1$3.dot(_v2$2); + + const denom = dot00 * dot11 - dot01 * dot01; // collinear or singular triangle + + if (denom === 0) { + // arbitrary location outside of triangle? + // not sure if this is the best idea, maybe should be returning undefined + return target.set(-2, -1, -1); + } + + const invDenom = 1 / denom; + const u = (dot11 * dot02 - dot01 * dot12) * invDenom; + const v = (dot00 * dot12 - dot01 * dot02) * invDenom; // barycentric coordinates must always sum to 1 + + return target.set(1 - u - v, v, u); + } + + static containsPoint(point, a, b, c) { + this.getBarycoord(point, a, b, c, _v3$1); + return _v3$1.x >= 0 && _v3$1.y >= 0 && _v3$1.x + _v3$1.y <= 1; + } + + static getUV(point, p1, p2, p3, uv1, uv2, uv3, target) { + this.getBarycoord(point, p1, p2, p3, _v3$1); + target.set(0, 0); + target.addScaledVector(uv1, _v3$1.x); + target.addScaledVector(uv2, _v3$1.y); + target.addScaledVector(uv3, _v3$1.z); + return target; + } + + static isFrontFacing(a, b, c, direction) { + _v0$1.subVectors(c, b); + + _v1$3.subVectors(a, b); // strictly front facing + + + return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false; + } + + set(a, b, c) { + this.a.copy(a); + this.b.copy(b); + this.c.copy(c); + return this; + } + + setFromPointsAndIndices(points, i0, i1, i2) { + this.a.copy(points[i0]); + this.b.copy(points[i1]); + this.c.copy(points[i2]); + return this; + } + + clone() { + return new this.constructor().copy(this); + } + + copy(triangle) { + this.a.copy(triangle.a); + this.b.copy(triangle.b); + this.c.copy(triangle.c); + return this; + } + + getArea() { + _v0$1.subVectors(this.c, this.b); + + _v1$3.subVectors(this.a, this.b); + + return _v0$1.cross(_v1$3).length() * 0.5; + } + + getMidpoint(target) { + return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3); + } + + getNormal(target) { + return Triangle.getNormal(this.a, this.b, this.c, target); + } + + getPlane(target) { + return target.setFromCoplanarPoints(this.a, this.b, this.c); + } + + getBarycoord(point, target) { + return Triangle.getBarycoord(point, this.a, this.b, this.c, target); + } + + getUV(point, uv1, uv2, uv3, target) { + return Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target); + } + + containsPoint(point) { + return Triangle.containsPoint(point, this.a, this.b, this.c); + } + + isFrontFacing(direction) { + return Triangle.isFrontFacing(this.a, this.b, this.c, direction); + } + + intersectsBox(box) { + return box.intersectsTriangle(this); + } + + closestPointToPoint(p, target) { + const a = this.a, + b = this.b, + c = this.c; + let v, w; // algorithm thanks to Real-Time Collision Detection by Christer Ericson, + // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., + // under the accompanying license; see chapter 5.1.5 for detailed explanation. + // basically, we're distinguishing which of the voronoi regions of the triangle + // the point lies in with the minimum amount of redundant computation. + + _vab.subVectors(b, a); + + _vac.subVectors(c, a); + + _vap.subVectors(p, a); + + const d1 = _vab.dot(_vap); + + const d2 = _vac.dot(_vap); + + if (d1 <= 0 && d2 <= 0) { + // vertex region of A; barycentric coords (1, 0, 0) + return target.copy(a); + } + + _vbp.subVectors(p, b); + + const d3 = _vab.dot(_vbp); + + const d4 = _vac.dot(_vbp); + + if (d3 >= 0 && d4 <= d3) { + // vertex region of B; barycentric coords (0, 1, 0) + return target.copy(b); + } + + const vc = d1 * d4 - d3 * d2; + + if (vc <= 0 && d1 >= 0 && d3 <= 0) { + v = d1 / (d1 - d3); // edge region of AB; barycentric coords (1-v, v, 0) + + return target.copy(a).addScaledVector(_vab, v); + } + + _vcp.subVectors(p, c); + + const d5 = _vab.dot(_vcp); + + const d6 = _vac.dot(_vcp); + + if (d6 >= 0 && d5 <= d6) { + // vertex region of C; barycentric coords (0, 0, 1) + return target.copy(c); + } + + const vb = d5 * d2 - d1 * d6; + + if (vb <= 0 && d2 >= 0 && d6 <= 0) { + w = d2 / (d2 - d6); // edge region of AC; barycentric coords (1-w, 0, w) + + return target.copy(a).addScaledVector(_vac, w); + } + + const va = d3 * d6 - d5 * d4; + + if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) { + _vbc.subVectors(c, b); + + w = (d4 - d3) / (d4 - d3 + (d5 - d6)); // edge region of BC; barycentric coords (0, 1-w, w) + + return target.copy(b).addScaledVector(_vbc, w); // edge region of BC + } // face region + + + const denom = 1 / (va + vb + vc); // u = va * denom + + v = vb * denom; + w = vc * denom; + return target.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w); + } + + equals(triangle) { + return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c); + } + + } + + let materialId = 0; + + class Material extends EventDispatcher { + constructor() { + super(); + Object.defineProperty(this, 'id', { + value: materialId++ + }); + this.uuid = generateUUID(); + this.name = ''; + this.type = 'Material'; + this.fog = true; + this.blending = NormalBlending; + this.side = FrontSide; + this.vertexColors = false; + this.opacity = 1; + this.format = RGBAFormat; + this.transparent = false; + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + this.stencilWriteMask = 0xff; + this.stencilFunc = AlwaysStencilFunc; + this.stencilRef = 0; + this.stencilFuncMask = 0xff; + this.stencilFail = KeepStencilOp; + this.stencilZFail = KeepStencilOp; + this.stencilZPass = KeepStencilOp; + this.stencilWrite = false; + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + this.shadowSide = null; + this.colorWrite = true; + this.precision = null; // override the renderer's default precision for this material + + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + this.dithering = false; + this.alphaToCoverage = false; + this.premultipliedAlpha = false; + this.visible = true; + this.toneMapped = true; + this.userData = {}; + this.version = 0; + this._alphaTest = 0; + } + + get alphaTest() { + return this._alphaTest; + } + + set alphaTest(value) { + if (this._alphaTest > 0 !== value > 0) { + this.version++; + } + + this._alphaTest = value; + } + + onBuild() {} + + onBeforeCompile() {} + + customProgramCacheKey() { + return this.onBeforeCompile.toString(); + } + + setValues(values) { + if (values === undefined) return; + + for (const key in values) { + const newValue = values[key]; + + if (newValue === undefined) { + console.warn('THREE.Material: \'' + key + '\' parameter is undefined.'); + continue; + } // for backward compatability if shading is set in the constructor + + + if (key === 'shading') { + console.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.'); + this.flatShading = newValue === FlatShading ? true : false; + continue; + } + + const currentValue = this[key]; + + if (currentValue === undefined) { + console.warn('THREE.' + this.type + ': \'' + key + '\' is not a property of this material.'); + continue; + } + + if (currentValue && currentValue.isColor) { + currentValue.set(newValue); + } else if (currentValue && currentValue.isVector3 && newValue && newValue.isVector3) { + currentValue.copy(newValue); + } else { + this[key] = newValue; + } + } + } + + toJSON(meta) { + const isRoot = meta === undefined || typeof meta === 'string'; + + if (isRoot) { + meta = { + textures: {}, + images: {} + }; + } + + const data = { + metadata: { + version: 4.5, + type: 'Material', + generator: 'Material.toJSON' + } + }; // standard Material serialization + + data.uuid = this.uuid; + data.type = this.type; + if (this.name !== '') data.name = this.name; + if (this.color && this.color.isColor) data.color = this.color.getHex(); + if (this.roughness !== undefined) data.roughness = this.roughness; + if (this.metalness !== undefined) data.metalness = this.metalness; + if (this.sheenTint && this.sheenTint.isColor) data.sheenTint = this.sheenTint.getHex(); + if (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex(); + if (this.emissiveIntensity && this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity; + if (this.specular && this.specular.isColor) data.specular = this.specular.getHex(); + if (this.specularIntensity !== undefined) data.specularIntensity = this.specularIntensity; + if (this.specularTint && this.specularTint.isColor) data.specularTint = this.specularTint.getHex(); + if (this.shininess !== undefined) data.shininess = this.shininess; + if (this.clearcoat !== undefined) data.clearcoat = this.clearcoat; + if (this.clearcoatRoughness !== undefined) data.clearcoatRoughness = this.clearcoatRoughness; + + if (this.clearcoatMap && this.clearcoatMap.isTexture) { + data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid; + } + + if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) { + data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid; + } + + if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) { + data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid; + data.clearcoatNormalScale = this.clearcoatNormalScale.toArray(); + } + + if (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid; + if (this.matcap && this.matcap.isTexture) data.matcap = this.matcap.toJSON(meta).uuid; + if (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid; + + if (this.lightMap && this.lightMap.isTexture) { + data.lightMap = this.lightMap.toJSON(meta).uuid; + data.lightMapIntensity = this.lightMapIntensity; + } + + if (this.aoMap && this.aoMap.isTexture) { + data.aoMap = this.aoMap.toJSON(meta).uuid; + data.aoMapIntensity = this.aoMapIntensity; + } + + if (this.bumpMap && this.bumpMap.isTexture) { + data.bumpMap = this.bumpMap.toJSON(meta).uuid; + data.bumpScale = this.bumpScale; + } + + if (this.normalMap && this.normalMap.isTexture) { + data.normalMap = this.normalMap.toJSON(meta).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + } + + if (this.displacementMap && this.displacementMap.isTexture) { + data.displacementMap = this.displacementMap.toJSON(meta).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + } + + if (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid; + if (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid; + if (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid; + if (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid; + if (this.specularIntensityMap && this.specularIntensityMap.isTexture) data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid; + if (this.specularTintMap && this.specularTintMap.isTexture) data.specularTintMap = this.specularTintMap.toJSON(meta).uuid; + + if (this.envMap && this.envMap.isTexture) { + data.envMap = this.envMap.toJSON(meta).uuid; + if (this.combine !== undefined) data.combine = this.combine; + } + + if (this.envMapIntensity !== undefined) data.envMapIntensity = this.envMapIntensity; + if (this.reflectivity !== undefined) data.reflectivity = this.reflectivity; + if (this.refractionRatio !== undefined) data.refractionRatio = this.refractionRatio; + + if (this.gradientMap && this.gradientMap.isTexture) { + data.gradientMap = this.gradientMap.toJSON(meta).uuid; + } + + if (this.transmission !== undefined) data.transmission = this.transmission; + if (this.transmissionMap && this.transmissionMap.isTexture) data.transmissionMap = this.transmissionMap.toJSON(meta).uuid; + if (this.thickness !== undefined) data.thickness = this.thickness; + if (this.thicknessMap && this.thicknessMap.isTexture) data.thicknessMap = this.thicknessMap.toJSON(meta).uuid; + if (this.attenuationDistance !== undefined) data.attenuationDistance = this.attenuationDistance; + if (this.attenuationTint !== undefined) data.attenuationTint = this.attenuationTint.getHex(); + if (this.size !== undefined) data.size = this.size; + if (this.shadowSide !== null) data.shadowSide = this.shadowSide; + if (this.sizeAttenuation !== undefined) data.sizeAttenuation = this.sizeAttenuation; + if (this.blending !== NormalBlending) data.blending = this.blending; + if (this.side !== FrontSide) data.side = this.side; + if (this.vertexColors) data.vertexColors = true; + if (this.opacity < 1) data.opacity = this.opacity; + if (this.format !== RGBAFormat) data.format = this.format; + if (this.transparent === true) data.transparent = this.transparent; + data.depthFunc = this.depthFunc; + data.depthTest = this.depthTest; + data.depthWrite = this.depthWrite; + data.colorWrite = this.colorWrite; + data.stencilWrite = this.stencilWrite; + data.stencilWriteMask = this.stencilWriteMask; + data.stencilFunc = this.stencilFunc; + data.stencilRef = this.stencilRef; + data.stencilFuncMask = this.stencilFuncMask; + data.stencilFail = this.stencilFail; + data.stencilZFail = this.stencilZFail; + data.stencilZPass = this.stencilZPass; // rotation (SpriteMaterial) + + if (this.rotation && this.rotation !== 0) data.rotation = this.rotation; + if (this.polygonOffset === true) data.polygonOffset = true; + if (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor; + if (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits; + if (this.linewidth && this.linewidth !== 1) data.linewidth = this.linewidth; + if (this.dashSize !== undefined) data.dashSize = this.dashSize; + if (this.gapSize !== undefined) data.gapSize = this.gapSize; + if (this.scale !== undefined) data.scale = this.scale; + if (this.dithering === true) data.dithering = true; + if (this.alphaTest > 0) data.alphaTest = this.alphaTest; + if (this.alphaToCoverage === true) data.alphaToCoverage = this.alphaToCoverage; + if (this.premultipliedAlpha === true) data.premultipliedAlpha = this.premultipliedAlpha; + if (this.wireframe === true) data.wireframe = this.wireframe; + if (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth; + if (this.wireframeLinecap !== 'round') data.wireframeLinecap = this.wireframeLinecap; + if (this.wireframeLinejoin !== 'round') data.wireframeLinejoin = this.wireframeLinejoin; + if (this.flatShading === true) data.flatShading = this.flatShading; + if (this.visible === false) data.visible = false; + if (this.toneMapped === false) data.toneMapped = false; + if (JSON.stringify(this.userData) !== '{}') data.userData = this.userData; // TODO: Copied from Object3D.toJSON + + function extractFromCache(cache) { + const values = []; + + for (const key in cache) { + const data = cache[key]; + delete data.metadata; + values.push(data); + } + + return values; + } + + if (isRoot) { + const textures = extractFromCache(meta.textures); + const images = extractFromCache(meta.images); + if (textures.length > 0) data.textures = textures; + if (images.length > 0) data.images = images; + } + + return data; + } + + clone() { + return new this.constructor().copy(this); + } + + copy(source) { + this.name = source.name; + this.fog = source.fog; + this.blending = source.blending; + this.side = source.side; + this.vertexColors = source.vertexColors; + this.opacity = source.opacity; + this.format = source.format; + this.transparent = source.transparent; + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + this.stencilWriteMask = source.stencilWriteMask; + this.stencilFunc = source.stencilFunc; + this.stencilRef = source.stencilRef; + this.stencilFuncMask = source.stencilFuncMask; + this.stencilFail = source.stencilFail; + this.stencilZFail = source.stencilZFail; + this.stencilZPass = source.stencilZPass; + this.stencilWrite = source.stencilWrite; + const srcPlanes = source.clippingPlanes; + let dstPlanes = null; + + if (srcPlanes !== null) { + const n = srcPlanes.length; + dstPlanes = new Array(n); + + for (let i = 0; i !== n; ++i) { + dstPlanes[i] = srcPlanes[i].clone(); + } + } + + this.clippingPlanes = dstPlanes; + this.clipIntersection = source.clipIntersection; + this.clipShadows = source.clipShadows; + this.shadowSide = source.shadowSide; + this.colorWrite = source.colorWrite; + this.precision = source.precision; + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + this.dithering = source.dithering; + this.alphaTest = source.alphaTest; + this.alphaToCoverage = source.alphaToCoverage; + this.premultipliedAlpha = source.premultipliedAlpha; + this.visible = source.visible; + this.toneMapped = source.toneMapped; + this.userData = JSON.parse(JSON.stringify(source.userData)); + return this; + } + + dispose() { + this.dispatchEvent({ + type: 'dispose' + }); + } + + set needsUpdate(value) { + if (value === true) this.version++; + } + + } + + Material.prototype.isMaterial = true; + + const _colorKeywords = { + 'aliceblue': 0xF0F8FF, + 'antiquewhite': 0xFAEBD7, + 'aqua': 0x00FFFF, + 'aquamarine': 0x7FFFD4, + 'azure': 0xF0FFFF, + 'beige': 0xF5F5DC, + 'bisque': 0xFFE4C4, + 'black': 0x000000, + 'blanchedalmond': 0xFFEBCD, + 'blue': 0x0000FF, + 'blueviolet': 0x8A2BE2, + 'brown': 0xA52A2A, + 'burlywood': 0xDEB887, + 'cadetblue': 0x5F9EA0, + 'chartreuse': 0x7FFF00, + 'chocolate': 0xD2691E, + 'coral': 0xFF7F50, + 'cornflowerblue': 0x6495ED, + 'cornsilk': 0xFFF8DC, + 'crimson': 0xDC143C, + 'cyan': 0x00FFFF, + 'darkblue': 0x00008B, + 'darkcyan': 0x008B8B, + 'darkgoldenrod': 0xB8860B, + 'darkgray': 0xA9A9A9, + 'darkgreen': 0x006400, + 'darkgrey': 0xA9A9A9, + 'darkkhaki': 0xBDB76B, + 'darkmagenta': 0x8B008B, + 'darkolivegreen': 0x556B2F, + 'darkorange': 0xFF8C00, + 'darkorchid': 0x9932CC, + 'darkred': 0x8B0000, + 'darksalmon': 0xE9967A, + 'darkseagreen': 0x8FBC8F, + 'darkslateblue': 0x483D8B, + 'darkslategray': 0x2F4F4F, + 'darkslategrey': 0x2F4F4F, + 'darkturquoise': 0x00CED1, + 'darkviolet': 0x9400D3, + 'deeppink': 0xFF1493, + 'deepskyblue': 0x00BFFF, + 'dimgray': 0x696969, + 'dimgrey': 0x696969, + 'dodgerblue': 0x1E90FF, + 'firebrick': 0xB22222, + 'floralwhite': 0xFFFAF0, + 'forestgreen': 0x228B22, + 'fuchsia': 0xFF00FF, + 'gainsboro': 0xDCDCDC, + 'ghostwhite': 0xF8F8FF, + 'gold': 0xFFD700, + 'goldenrod': 0xDAA520, + 'gray': 0x808080, + 'green': 0x008000, + 'greenyellow': 0xADFF2F, + 'grey': 0x808080, + 'honeydew': 0xF0FFF0, + 'hotpink': 0xFF69B4, + 'indianred': 0xCD5C5C, + 'indigo': 0x4B0082, + 'ivory': 0xFFFFF0, + 'khaki': 0xF0E68C, + 'lavender': 0xE6E6FA, + 'lavenderblush': 0xFFF0F5, + 'lawngreen': 0x7CFC00, + 'lemonchiffon': 0xFFFACD, + 'lightblue': 0xADD8E6, + 'lightcoral': 0xF08080, + 'lightcyan': 0xE0FFFF, + 'lightgoldenrodyellow': 0xFAFAD2, + 'lightgray': 0xD3D3D3, + 'lightgreen': 0x90EE90, + 'lightgrey': 0xD3D3D3, + 'lightpink': 0xFFB6C1, + 'lightsalmon': 0xFFA07A, + 'lightseagreen': 0x20B2AA, + 'lightskyblue': 0x87CEFA, + 'lightslategray': 0x778899, + 'lightslategrey': 0x778899, + 'lightsteelblue': 0xB0C4DE, + 'lightyellow': 0xFFFFE0, + 'lime': 0x00FF00, + 'limegreen': 0x32CD32, + 'linen': 0xFAF0E6, + 'magenta': 0xFF00FF, + 'maroon': 0x800000, + 'mediumaquamarine': 0x66CDAA, + 'mediumblue': 0x0000CD, + 'mediumorchid': 0xBA55D3, + 'mediumpurple': 0x9370DB, + 'mediumseagreen': 0x3CB371, + 'mediumslateblue': 0x7B68EE, + 'mediumspringgreen': 0x00FA9A, + 'mediumturquoise': 0x48D1CC, + 'mediumvioletred': 0xC71585, + 'midnightblue': 0x191970, + 'mintcream': 0xF5FFFA, + 'mistyrose': 0xFFE4E1, + 'moccasin': 0xFFE4B5, + 'navajowhite': 0xFFDEAD, + 'navy': 0x000080, + 'oldlace': 0xFDF5E6, + 'olive': 0x808000, + 'olivedrab': 0x6B8E23, + 'orange': 0xFFA500, + 'orangered': 0xFF4500, + 'orchid': 0xDA70D6, + 'palegoldenrod': 0xEEE8AA, + 'palegreen': 0x98FB98, + 'paleturquoise': 0xAFEEEE, + 'palevioletred': 0xDB7093, + 'papayawhip': 0xFFEFD5, + 'peachpuff': 0xFFDAB9, + 'peru': 0xCD853F, + 'pink': 0xFFC0CB, + 'plum': 0xDDA0DD, + 'powderblue': 0xB0E0E6, + 'purple': 0x800080, + 'rebeccapurple': 0x663399, + 'red': 0xFF0000, + 'rosybrown': 0xBC8F8F, + 'royalblue': 0x4169E1, + 'saddlebrown': 0x8B4513, + 'salmon': 0xFA8072, + 'sandybrown': 0xF4A460, + 'seagreen': 0x2E8B57, + 'seashell': 0xFFF5EE, + 'sienna': 0xA0522D, + 'silver': 0xC0C0C0, + 'skyblue': 0x87CEEB, + 'slateblue': 0x6A5ACD, + 'slategray': 0x708090, + 'slategrey': 0x708090, + 'snow': 0xFFFAFA, + 'springgreen': 0x00FF7F, + 'steelblue': 0x4682B4, + 'tan': 0xD2B48C, + 'teal': 0x008080, + 'thistle': 0xD8BFD8, + 'tomato': 0xFF6347, + 'turquoise': 0x40E0D0, + 'violet': 0xEE82EE, + 'wheat': 0xF5DEB3, + 'white': 0xFFFFFF, + 'whitesmoke': 0xF5F5F5, + 'yellow': 0xFFFF00, + 'yellowgreen': 0x9ACD32 + }; + const _hslA = { + h: 0, + s: 0, + l: 0 + }; + const _hslB = { + h: 0, + s: 0, + l: 0 + }; + + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t); + return p; + } + + function SRGBToLinear(c) { + return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4); + } + + function LinearToSRGB(c) { + return c < 0.0031308 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055; + } + + class Color { + constructor(r, g, b) { + if (g === undefined && b === undefined) { + // r is THREE.Color, hex or string + return this.set(r); + } + + return this.setRGB(r, g, b); + } + + set(value) { + if (value && value.isColor) { + this.copy(value); + } else if (typeof value === 'number') { + this.setHex(value); + } else if (typeof value === 'string') { + this.setStyle(value); + } + + return this; + } + + setScalar(scalar) { + this.r = scalar; + this.g = scalar; + this.b = scalar; + return this; + } + + setHex(hex) { + hex = Math.floor(hex); + this.r = (hex >> 16 & 255) / 255; + this.g = (hex >> 8 & 255) / 255; + this.b = (hex & 255) / 255; + return this; + } + + setRGB(r, g, b) { + this.r = r; + this.g = g; + this.b = b; + return this; + } + + setHSL(h, s, l) { + // h,s,l ranges are in 0.0 - 1.0 + h = euclideanModulo(h, 1); + s = clamp(s, 0, 1); + l = clamp(l, 0, 1); + + if (s === 0) { + this.r = this.g = this.b = l; + } else { + const p = l <= 0.5 ? l * (1 + s) : l + s - l * s; + const q = 2 * l - p; + this.r = hue2rgb(q, p, h + 1 / 3); + this.g = hue2rgb(q, p, h); + this.b = hue2rgb(q, p, h - 1 / 3); + } + + return this; + } + + setStyle(style) { + function handleAlpha(string) { + if (string === undefined) return; + + if (parseFloat(string) < 1) { + console.warn('THREE.Color: Alpha component of ' + style + ' will be ignored.'); + } + } + + let m; + + if (m = /^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(style)) { + // rgb / hsl + let color; + const name = m[1]; + const components = m[2]; + + switch (name) { + case 'rgb': + case 'rgba': + if (color = /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + // rgb(255,0,0) rgba(255,0,0,0.5) + this.r = Math.min(255, parseInt(color[1], 10)) / 255; + this.g = Math.min(255, parseInt(color[2], 10)) / 255; + this.b = Math.min(255, parseInt(color[3], 10)) / 255; + handleAlpha(color[4]); + return this; + } + + if (color = /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) + this.r = Math.min(100, parseInt(color[1], 10)) / 100; + this.g = Math.min(100, parseInt(color[2], 10)) / 100; + this.b = Math.min(100, parseInt(color[3], 10)) / 100; + handleAlpha(color[4]); + return this; + } + + break; + + case 'hsl': + case 'hsla': + if (color = /^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)) { + // hsl(120,50%,50%) hsla(120,50%,50%,0.5) + const h = parseFloat(color[1]) / 360; + const s = parseInt(color[2], 10) / 100; + const l = parseInt(color[3], 10) / 100; + handleAlpha(color[4]); + return this.setHSL(h, s, l); + } + + break; + } + } else if (m = /^\#([A-Fa-f\d]+)$/.exec(style)) { + // hex color + const hex = m[1]; + const size = hex.length; + + if (size === 3) { + // #ff0 + this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255; + this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255; + this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255; + return this; + } else if (size === 6) { + // #ff0000 + this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255; + this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255; + this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255; + return this; + } + } + + if (style && style.length > 0) { + return this.setColorName(style); + } + + return this; + } + + setColorName(style) { + // color keywords + const hex = _colorKeywords[style.toLowerCase()]; + + if (hex !== undefined) { + // red + this.setHex(hex); + } else { + // unknown color + console.warn('THREE.Color: Unknown color ' + style); + } + + return this; + } + + clone() { + return new this.constructor(this.r, this.g, this.b); + } + + copy(color) { + this.r = color.r; + this.g = color.g; + this.b = color.b; + return this; + } + + copyGammaToLinear(color, gammaFactor = 2.0) { + this.r = Math.pow(color.r, gammaFactor); + this.g = Math.pow(color.g, gammaFactor); + this.b = Math.pow(color.b, gammaFactor); + return this; + } + + copyLinearToGamma(color, gammaFactor = 2.0) { + const safeInverse = gammaFactor > 0 ? 1.0 / gammaFactor : 1.0; + this.r = Math.pow(color.r, safeInverse); + this.g = Math.pow(color.g, safeInverse); + this.b = Math.pow(color.b, safeInverse); + return this; + } + + convertGammaToLinear(gammaFactor) { + this.copyGammaToLinear(this, gammaFactor); + return this; + } + + convertLinearToGamma(gammaFactor) { + this.copyLinearToGamma(this, gammaFactor); + return this; + } + + copySRGBToLinear(color) { + this.r = SRGBToLinear(color.r); + this.g = SRGBToLinear(color.g); + this.b = SRGBToLinear(color.b); + return this; + } + + copyLinearToSRGB(color) { + this.r = LinearToSRGB(color.r); + this.g = LinearToSRGB(color.g); + this.b = LinearToSRGB(color.b); + return this; + } + + convertSRGBToLinear() { + this.copySRGBToLinear(this); + return this; + } + + convertLinearToSRGB() { + this.copyLinearToSRGB(this); + return this; + } + + getHex() { + return this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0; + } + + getHexString() { + return ('000000' + this.getHex().toString(16)).slice(-6); + } + + getHSL(target) { + // h,s,l ranges are in 0.0 - 1.0 + const r = this.r, + g = this.g, + b = this.b; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let hue, saturation; + const lightness = (min + max) / 2.0; + + if (min === max) { + hue = 0; + saturation = 0; + } else { + const delta = max - min; + saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min); + + switch (max) { + case r: + hue = (g - b) / delta + (g < b ? 6 : 0); + break; + + case g: + hue = (b - r) / delta + 2; + break; + + case b: + hue = (r - g) / delta + 4; + break; + } + + hue /= 6; + } + + target.h = hue; + target.s = saturation; + target.l = lightness; + return target; + } + + getStyle() { + return 'rgb(' + (this.r * 255 | 0) + ',' + (this.g * 255 | 0) + ',' + (this.b * 255 | 0) + ')'; + } + + offsetHSL(h, s, l) { + this.getHSL(_hslA); + _hslA.h += h; + _hslA.s += s; + _hslA.l += l; + this.setHSL(_hslA.h, _hslA.s, _hslA.l); + return this; + } + + add(color) { + this.r += color.r; + this.g += color.g; + this.b += color.b; + return this; + } + + addColors(color1, color2) { + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + return this; + } + + addScalar(s) { + this.r += s; + this.g += s; + this.b += s; + return this; + } + + sub(color) { + this.r = Math.max(0, this.r - color.r); + this.g = Math.max(0, this.g - color.g); + this.b = Math.max(0, this.b - color.b); + return this; + } + + multiply(color) { + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + return this; + } + + multiplyScalar(s) { + this.r *= s; + this.g *= s; + this.b *= s; + return this; + } + + lerp(color, alpha) { + this.r += (color.r - this.r) * alpha; + this.g += (color.g - this.g) * alpha; + this.b += (color.b - this.b) * alpha; + return this; + } + + lerpColors(color1, color2, alpha) { + this.r = color1.r + (color2.r - color1.r) * alpha; + this.g = color1.g + (color2.g - color1.g) * alpha; + this.b = color1.b + (color2.b - color1.b) * alpha; + return this; + } + + lerpHSL(color, alpha) { + this.getHSL(_hslA); + color.getHSL(_hslB); + const h = lerp(_hslA.h, _hslB.h, alpha); + const s = lerp(_hslA.s, _hslB.s, alpha); + const l = lerp(_hslA.l, _hslB.l, alpha); + this.setHSL(h, s, l); + return this; + } + + equals(c) { + return c.r === this.r && c.g === this.g && c.b === this.b; + } + + fromArray(array, offset = 0) { + this.r = array[offset]; + this.g = array[offset + 1]; + this.b = array[offset + 2]; + return this; + } + + toArray(array = [], offset = 0) { + array[offset] = this.r; + array[offset + 1] = this.g; + array[offset + 2] = this.b; + return array; + } + + fromBufferAttribute(attribute, index) { + this.r = attribute.getX(index); + this.g = attribute.getY(index); + this.b = attribute.getZ(index); + + if (attribute.normalized === true) { + // assuming Uint8Array + this.r /= 255; + this.g /= 255; + this.b /= 255; + } + + return this; + } + + toJSON() { + return this.getHex(); + } + + } + + Color.NAMES = _colorKeywords; + Color.prototype.isColor = true; + Color.prototype.r = 1; + Color.prototype.g = 1; + Color.prototype.b = 1; + + /** + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * depthTest: , + * depthWrite: , + * + * wireframe: , + * wireframeLinewidth: , + * } + */ + + class MeshBasicMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'MeshBasicMaterial'; + this.color = new Color(0xffffff); // emissive + + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1.0; + this.aoMap = null; + this.aoMapIntensity = 1.0; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + return this; + } + + } + + MeshBasicMaterial.prototype.isMeshBasicMaterial = true; + + const _vector$9 = /*@__PURE__*/new Vector3(); + + const _vector2$1 = /*@__PURE__*/new Vector2(); + + class BufferAttribute { + constructor(array, itemSize, normalized) { + if (Array.isArray(array)) { + throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.'); + } + + this.name = ''; + this.array = array; + this.itemSize = itemSize; + this.count = array !== undefined ? array.length / itemSize : 0; + this.normalized = normalized === true; + this.usage = StaticDrawUsage; + this.updateRange = { + offset: 0, + count: -1 + }; + this.version = 0; + } + + onUploadCallback() {} + + set needsUpdate(value) { + if (value === true) this.version++; + } + + setUsage(value) { + this.usage = value; + return this; + } + + copy(source) { + this.name = source.name; + this.array = new source.array.constructor(source.array); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + this.usage = source.usage; + return this; + } + + copyAt(index1, attribute, index2) { + index1 *= this.itemSize; + index2 *= attribute.itemSize; + + for (let i = 0, l = this.itemSize; i < l; i++) { + this.array[index1 + i] = attribute.array[index2 + i]; + } + + return this; + } + + copyArray(array) { + this.array.set(array); + return this; + } + + copyColorsArray(colors) { + const array = this.array; + let offset = 0; + + for (let i = 0, l = colors.length; i < l; i++) { + let color = colors[i]; + + if (color === undefined) { + console.warn('THREE.BufferAttribute.copyColorsArray(): color is undefined', i); + color = new Color(); + } + + array[offset++] = color.r; + array[offset++] = color.g; + array[offset++] = color.b; + } + + return this; + } + + copyVector2sArray(vectors) { + const array = this.array; + let offset = 0; + + for (let i = 0, l = vectors.length; i < l; i++) { + let vector = vectors[i]; + + if (vector === undefined) { + console.warn('THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i); + vector = new Vector2(); + } + + array[offset++] = vector.x; + array[offset++] = vector.y; + } + + return this; + } + + copyVector3sArray(vectors) { + const array = this.array; + let offset = 0; + + for (let i = 0, l = vectors.length; i < l; i++) { + let vector = vectors[i]; + + if (vector === undefined) { + console.warn('THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i); + vector = new Vector3(); + } + + array[offset++] = vector.x; + array[offset++] = vector.y; + array[offset++] = vector.z; + } + + return this; + } + + copyVector4sArray(vectors) { + const array = this.array; + let offset = 0; + + for (let i = 0, l = vectors.length; i < l; i++) { + let vector = vectors[i]; + + if (vector === undefined) { + console.warn('THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i); + vector = new Vector4(); + } + + array[offset++] = vector.x; + array[offset++] = vector.y; + array[offset++] = vector.z; + array[offset++] = vector.w; + } + + return this; + } + + applyMatrix3(m) { + if (this.itemSize === 2) { + for (let i = 0, l = this.count; i < l; i++) { + _vector2$1.fromBufferAttribute(this, i); + + _vector2$1.applyMatrix3(m); + + this.setXY(i, _vector2$1.x, _vector2$1.y); + } + } else if (this.itemSize === 3) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.fromBufferAttribute(this, i); + + _vector$9.applyMatrix3(m); + + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + } + + return this; + } + + applyMatrix4(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.x = this.getX(i); + _vector$9.y = this.getY(i); + _vector$9.z = this.getZ(i); + + _vector$9.applyMatrix4(m); + + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + + return this; + } + + applyNormalMatrix(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.x = this.getX(i); + _vector$9.y = this.getY(i); + _vector$9.z = this.getZ(i); + + _vector$9.applyNormalMatrix(m); + + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + + return this; + } + + transformDirection(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$9.x = this.getX(i); + _vector$9.y = this.getY(i); + _vector$9.z = this.getZ(i); + + _vector$9.transformDirection(m); + + this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z); + } + + return this; + } + + set(value, offset = 0) { + this.array.set(value, offset); + return this; + } + + getX(index) { + return this.array[index * this.itemSize]; + } + + setX(index, x) { + this.array[index * this.itemSize] = x; + return this; + } + + getY(index) { + return this.array[index * this.itemSize + 1]; + } + + setY(index, y) { + this.array[index * this.itemSize + 1] = y; + return this; + } + + getZ(index) { + return this.array[index * this.itemSize + 2]; + } + + setZ(index, z) { + this.array[index * this.itemSize + 2] = z; + return this; + } + + getW(index) { + return this.array[index * this.itemSize + 3]; + } + + setW(index, w) { + this.array[index * this.itemSize + 3] = w; + return this; + } + + setXY(index, x, y) { + index *= this.itemSize; + this.array[index + 0] = x; + this.array[index + 1] = y; + return this; + } + + setXYZ(index, x, y, z) { + index *= this.itemSize; + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + return this; + } + + setXYZW(index, x, y, z, w) { + index *= this.itemSize; + this.array[index + 0] = x; + this.array[index + 1] = y; + this.array[index + 2] = z; + this.array[index + 3] = w; + return this; + } + + onUpload(callback) { + this.onUploadCallback = callback; + return this; + } + + clone() { + return new this.constructor(this.array, this.itemSize).copy(this); + } + + toJSON() { + const data = { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.prototype.slice.call(this.array), + normalized: this.normalized + }; + if (this.name !== '') data.name = this.name; + if (this.usage !== StaticDrawUsage) data.usage = this.usage; + if (this.updateRange.offset !== 0 || this.updateRange.count !== -1) data.updateRange = this.updateRange; + return data; + } + + } + + BufferAttribute.prototype.isBufferAttribute = true; // + + class Int8BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Int8Array(array), itemSize, normalized); + } + + } + + class Uint8BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint8Array(array), itemSize, normalized); + } + + } + + class Uint8ClampedBufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint8ClampedArray(array), itemSize, normalized); + } + + } + + class Int16BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Int16Array(array), itemSize, normalized); + } + + } + + class Uint16BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint16Array(array), itemSize, normalized); + } + + } + + class Int32BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Int32Array(array), itemSize, normalized); + } + + } + + class Uint32BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint32Array(array), itemSize, normalized); + } + + } + + class Float16BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Uint16Array(array), itemSize, normalized); + } + + } + + Float16BufferAttribute.prototype.isFloat16BufferAttribute = true; + + class Float32BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Float32Array(array), itemSize, normalized); + } + + } + + class Float64BufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized) { + super(new Float64Array(array), itemSize, normalized); + } + + } // + + function arrayMax(array) { + if (array.length === 0) return -Infinity; + let max = array[0]; + + for (let i = 1, l = array.length; i < l; ++i) { + if (array[i] > max) max = array[i]; + } + + return max; + } + + const TYPED_ARRAYS = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + Uint8ClampedArray: Uint8ClampedArray, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array + }; + + function getTypedArray(type, buffer) { + return new TYPED_ARRAYS[type](buffer); + } + + let _id = 0; + + const _m1 = /*@__PURE__*/new Matrix4(); + + const _obj = /*@__PURE__*/new Object3D(); + + const _offset = /*@__PURE__*/new Vector3(); + + const _box$1 = /*@__PURE__*/new Box3(); + + const _boxMorphTargets = /*@__PURE__*/new Box3(); + + const _vector$8 = /*@__PURE__*/new Vector3(); + + class BufferGeometry extends EventDispatcher { + constructor() { + super(); + Object.defineProperty(this, 'id', { + value: _id++ + }); + this.uuid = generateUUID(); + this.name = ''; + this.type = 'BufferGeometry'; + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.morphTargetsRelative = false; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + this.drawRange = { + start: 0, + count: Infinity + }; + this.userData = {}; + } + + getIndex() { + return this.index; + } + + setIndex(index) { + if (Array.isArray(index)) { + this.index = new (arrayMax(index) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1); + } else { + this.index = index; + } + + return this; + } + + getAttribute(name) { + return this.attributes[name]; + } + + setAttribute(name, attribute) { + this.attributes[name] = attribute; + return this; + } + + deleteAttribute(name) { + delete this.attributes[name]; + return this; + } + + hasAttribute(name) { + return this.attributes[name] !== undefined; + } + + addGroup(start, count, materialIndex = 0) { + this.groups.push({ + start: start, + count: count, + materialIndex: materialIndex + }); + } + + clearGroups() { + this.groups = []; + } + + setDrawRange(start, count) { + this.drawRange.start = start; + this.drawRange.count = count; + } + + applyMatrix4(matrix) { + const position = this.attributes.position; + + if (position !== undefined) { + position.applyMatrix4(matrix); + position.needsUpdate = true; + } + + const normal = this.attributes.normal; + + if (normal !== undefined) { + const normalMatrix = new Matrix3().getNormalMatrix(matrix); + normal.applyNormalMatrix(normalMatrix); + normal.needsUpdate = true; + } + + const tangent = this.attributes.tangent; + + if (tangent !== undefined) { + tangent.transformDirection(matrix); + tangent.needsUpdate = true; + } + + if (this.boundingBox !== null) { + this.computeBoundingBox(); + } + + if (this.boundingSphere !== null) { + this.computeBoundingSphere(); + } + + return this; + } + + applyQuaternion(q) { + _m1.makeRotationFromQuaternion(q); + + this.applyMatrix4(_m1); + return this; + } + + rotateX(angle) { + // rotate geometry around world x-axis + _m1.makeRotationX(angle); + + this.applyMatrix4(_m1); + return this; + } + + rotateY(angle) { + // rotate geometry around world y-axis + _m1.makeRotationY(angle); + + this.applyMatrix4(_m1); + return this; + } + + rotateZ(angle) { + // rotate geometry around world z-axis + _m1.makeRotationZ(angle); + + this.applyMatrix4(_m1); + return this; + } + + translate(x, y, z) { + // translate geometry + _m1.makeTranslation(x, y, z); + + this.applyMatrix4(_m1); + return this; + } + + scale(x, y, z) { + // scale geometry + _m1.makeScale(x, y, z); + + this.applyMatrix4(_m1); + return this; + } + + lookAt(vector) { + _obj.lookAt(vector); + + _obj.updateMatrix(); + + this.applyMatrix4(_obj.matrix); + return this; + } + + center() { + this.computeBoundingBox(); + this.boundingBox.getCenter(_offset).negate(); + this.translate(_offset.x, _offset.y, _offset.z); + return this; + } + + setFromPoints(points) { + const position = []; + + for (let i = 0, l = points.length; i < l; i++) { + const point = points[i]; + position.push(point.x, point.y, point.z || 0); + } + + this.setAttribute('position', new Float32BufferAttribute(position, 3)); + return this; + } + + computeBoundingBox() { + if (this.boundingBox === null) { + this.boundingBox = new Box3(); + } + + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + + if (position && position.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', this); + this.boundingBox.set(new Vector3(-Infinity, -Infinity, -Infinity), new Vector3(+Infinity, +Infinity, +Infinity)); + return; + } + + if (position !== undefined) { + this.boundingBox.setFromBufferAttribute(position); // process morph attributes if present + + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + + _box$1.setFromBufferAttribute(morphAttribute); + + if (this.morphTargetsRelative) { + _vector$8.addVectors(this.boundingBox.min, _box$1.min); + + this.boundingBox.expandByPoint(_vector$8); + + _vector$8.addVectors(this.boundingBox.max, _box$1.max); + + this.boundingBox.expandByPoint(_vector$8); + } else { + this.boundingBox.expandByPoint(_box$1.min); + this.boundingBox.expandByPoint(_box$1.max); + } + } + } + } else { + this.boundingBox.makeEmpty(); + } + + if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) { + console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this); + } + } + + computeBoundingSphere() { + if (this.boundingSphere === null) { + this.boundingSphere = new Sphere(); + } + + const position = this.attributes.position; + const morphAttributesPosition = this.morphAttributes.position; + + if (position && position.isGLBufferAttribute) { + console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', this); + this.boundingSphere.set(new Vector3(), Infinity); + return; + } + + if (position) { + // first, find the center of the bounding sphere + const center = this.boundingSphere.center; + + _box$1.setFromBufferAttribute(position); // process morph attributes if present + + + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + + _boxMorphTargets.setFromBufferAttribute(morphAttribute); + + if (this.morphTargetsRelative) { + _vector$8.addVectors(_box$1.min, _boxMorphTargets.min); + + _box$1.expandByPoint(_vector$8); + + _vector$8.addVectors(_box$1.max, _boxMorphTargets.max); + + _box$1.expandByPoint(_vector$8); + } else { + _box$1.expandByPoint(_boxMorphTargets.min); + + _box$1.expandByPoint(_boxMorphTargets.max); + } + } + } + + _box$1.getCenter(center); // second, try to find a boundingSphere with a radius smaller than the + // boundingSphere of the boundingBox: sqrt(3) smaller in the best case + + + let maxRadiusSq = 0; + + for (let i = 0, il = position.count; i < il; i++) { + _vector$8.fromBufferAttribute(position, i); + + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8)); + } // process morph attributes if present + + + if (morphAttributesPosition) { + for (let i = 0, il = morphAttributesPosition.length; i < il; i++) { + const morphAttribute = morphAttributesPosition[i]; + const morphTargetsRelative = this.morphTargetsRelative; + + for (let j = 0, jl = morphAttribute.count; j < jl; j++) { + _vector$8.fromBufferAttribute(morphAttribute, j); + + if (morphTargetsRelative) { + _offset.fromBufferAttribute(position, j); + + _vector$8.add(_offset); + } + + maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8)); + } + } + } + + this.boundingSphere.radius = Math.sqrt(maxRadiusSq); + + if (isNaN(this.boundingSphere.radius)) { + console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this); + } + } + } + + computeTangents() { + const index = this.index; + const attributes = this.attributes; // based on http://www.terathon.com/code/tangent.html + // (per vertex tangents) + + if (index === null || attributes.position === undefined || attributes.normal === undefined || attributes.uv === undefined) { + console.error('THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)'); + return; + } + + const indices = index.array; + const positions = attributes.position.array; + const normals = attributes.normal.array; + const uvs = attributes.uv.array; + const nVertices = positions.length / 3; + + if (attributes.tangent === undefined) { + this.setAttribute('tangent', new BufferAttribute(new Float32Array(4 * nVertices), 4)); + } + + const tangents = attributes.tangent.array; + const tan1 = [], + tan2 = []; + + for (let i = 0; i < nVertices; i++) { + tan1[i] = new Vector3(); + tan2[i] = new Vector3(); + } + + const vA = new Vector3(), + vB = new Vector3(), + vC = new Vector3(), + uvA = new Vector2(), + uvB = new Vector2(), + uvC = new Vector2(), + sdir = new Vector3(), + tdir = new Vector3(); + + function handleTriangle(a, b, c) { + vA.fromArray(positions, a * 3); + vB.fromArray(positions, b * 3); + vC.fromArray(positions, c * 3); + uvA.fromArray(uvs, a * 2); + uvB.fromArray(uvs, b * 2); + uvC.fromArray(uvs, c * 2); + vB.sub(vA); + vC.sub(vA); + uvB.sub(uvA); + uvC.sub(uvA); + const r = 1.0 / (uvB.x * uvC.y - uvC.x * uvB.y); // silently ignore degenerate uv triangles having coincident or colinear vertices + + if (!isFinite(r)) return; + sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r); + tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r); + tan1[a].add(sdir); + tan1[b].add(sdir); + tan1[c].add(sdir); + tan2[a].add(tdir); + tan2[b].add(tdir); + tan2[c].add(tdir); + } + + let groups = this.groups; + + if (groups.length === 0) { + groups = [{ + start: 0, + count: indices.length + }]; + } + + for (let i = 0, il = groups.length; i < il; ++i) { + const group = groups[i]; + const start = group.start; + const count = group.count; + + for (let j = start, jl = start + count; j < jl; j += 3) { + handleTriangle(indices[j + 0], indices[j + 1], indices[j + 2]); + } + } + + const tmp = new Vector3(), + tmp2 = new Vector3(); + const n = new Vector3(), + n2 = new Vector3(); + + function handleVertex(v) { + n.fromArray(normals, v * 3); + n2.copy(n); + const t = tan1[v]; // Gram-Schmidt orthogonalize + + tmp.copy(t); + tmp.sub(n.multiplyScalar(n.dot(t))).normalize(); // Calculate handedness + + tmp2.crossVectors(n2, t); + const test = tmp2.dot(tan2[v]); + const w = test < 0.0 ? -1.0 : 1.0; + tangents[v * 4] = tmp.x; + tangents[v * 4 + 1] = tmp.y; + tangents[v * 4 + 2] = tmp.z; + tangents[v * 4 + 3] = w; + } + + for (let i = 0, il = groups.length; i < il; ++i) { + const group = groups[i]; + const start = group.start; + const count = group.count; + + for (let j = start, jl = start + count; j < jl; j += 3) { + handleVertex(indices[j + 0]); + handleVertex(indices[j + 1]); + handleVertex(indices[j + 2]); + } + } + } + + computeVertexNormals() { + const index = this.index; + const positionAttribute = this.getAttribute('position'); + + if (positionAttribute !== undefined) { + let normalAttribute = this.getAttribute('normal'); + + if (normalAttribute === undefined) { + normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3); + this.setAttribute('normal', normalAttribute); + } else { + // reset existing normals to zero + for (let i = 0, il = normalAttribute.count; i < il; i++) { + normalAttribute.setXYZ(i, 0, 0, 0); + } + } + + const pA = new Vector3(), + pB = new Vector3(), + pC = new Vector3(); + const nA = new Vector3(), + nB = new Vector3(), + nC = new Vector3(); + const cb = new Vector3(), + ab = new Vector3(); // indexed elements + + if (index) { + for (let i = 0, il = index.count; i < il; i += 3) { + const vA = index.getX(i + 0); + const vB = index.getX(i + 1); + const vC = index.getX(i + 2); + pA.fromBufferAttribute(positionAttribute, vA); + pB.fromBufferAttribute(positionAttribute, vB); + pC.fromBufferAttribute(positionAttribute, vC); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); + nA.fromBufferAttribute(normalAttribute, vA); + nB.fromBufferAttribute(normalAttribute, vB); + nC.fromBufferAttribute(normalAttribute, vC); + nA.add(cb); + nB.add(cb); + nC.add(cb); + normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z); + normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z); + normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z); + } + } else { + // non-indexed elements (unconnected triangle soup) + for (let i = 0, il = positionAttribute.count; i < il; i += 3) { + pA.fromBufferAttribute(positionAttribute, i + 0); + pB.fromBufferAttribute(positionAttribute, i + 1); + pC.fromBufferAttribute(positionAttribute, i + 2); + cb.subVectors(pC, pB); + ab.subVectors(pA, pB); + cb.cross(ab); + normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z); + normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z); + normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z); + } + } + + this.normalizeNormals(); + normalAttribute.needsUpdate = true; + } + } + + merge(geometry, offset) { + if (!(geometry && geometry.isBufferGeometry)) { + console.error('THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry); + return; + } + + if (offset === undefined) { + offset = 0; + console.warn('THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'); + } + + const attributes = this.attributes; + + for (const key in attributes) { + if (geometry.attributes[key] === undefined) continue; + const attribute1 = attributes[key]; + const attributeArray1 = attribute1.array; + const attribute2 = geometry.attributes[key]; + const attributeArray2 = attribute2.array; + const attributeOffset = attribute2.itemSize * offset; + const length = Math.min(attributeArray2.length, attributeArray1.length - attributeOffset); + + for (let i = 0, j = attributeOffset; i < length; i++, j++) { + attributeArray1[j] = attributeArray2[i]; + } + } + + return this; + } + + normalizeNormals() { + const normals = this.attributes.normal; + + for (let i = 0, il = normals.count; i < il; i++) { + _vector$8.fromBufferAttribute(normals, i); + + _vector$8.normalize(); + + normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z); + } + } + + toNonIndexed() { + function convertBufferAttribute(attribute, indices) { + const array = attribute.array; + const itemSize = attribute.itemSize; + const normalized = attribute.normalized; + const array2 = new array.constructor(indices.length * itemSize); + let index = 0, + index2 = 0; + + for (let i = 0, l = indices.length; i < l; i++) { + if (attribute.isInterleavedBufferAttribute) { + index = indices[i] * attribute.data.stride + attribute.offset; + } else { + index = indices[i] * itemSize; + } + + for (let j = 0; j < itemSize; j++) { + array2[index2++] = array[index++]; + } + } + + return new BufferAttribute(array2, itemSize, normalized); + } // + + + if (this.index === null) { + console.warn('THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.'); + return this; + } + + const geometry2 = new BufferGeometry(); + const indices = this.index.array; + const attributes = this.attributes; // attributes + + for (const name in attributes) { + const attribute = attributes[name]; + const newAttribute = convertBufferAttribute(attribute, indices); + geometry2.setAttribute(name, newAttribute); + } // morph attributes + + + const morphAttributes = this.morphAttributes; + + for (const name in morphAttributes) { + const morphArray = []; + const morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes + + for (let i = 0, il = morphAttribute.length; i < il; i++) { + const attribute = morphAttribute[i]; + const newAttribute = convertBufferAttribute(attribute, indices); + morphArray.push(newAttribute); + } + + geometry2.morphAttributes[name] = morphArray; + } + + geometry2.morphTargetsRelative = this.morphTargetsRelative; // groups + + const groups = this.groups; + + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + geometry2.addGroup(group.start, group.count, group.materialIndex); + } + + return geometry2; + } + + toJSON() { + const data = { + metadata: { + version: 4.5, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON' + } + }; // standard BufferGeometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if (this.name !== '') data.name = this.name; + if (Object.keys(this.userData).length > 0) data.userData = this.userData; + + if (this.parameters !== undefined) { + const parameters = this.parameters; + + for (const key in parameters) { + if (parameters[key] !== undefined) data[key] = parameters[key]; + } + + return data; + } // for simplicity the code assumes attributes are not shared across geometries, see #15811 + + + data.data = { + attributes: {} + }; + const index = this.index; + + if (index !== null) { + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call(index.array) + }; + } + + const attributes = this.attributes; + + for (const key in attributes) { + const attribute = attributes[key]; + data.data.attributes[key] = attribute.toJSON(data.data); + } + + const morphAttributes = {}; + let hasMorphAttributes = false; + + for (const key in this.morphAttributes) { + const attributeArray = this.morphAttributes[key]; + const array = []; + + for (let i = 0, il = attributeArray.length; i < il; i++) { + const attribute = attributeArray[i]; + array.push(attribute.toJSON(data.data)); + } + + if (array.length > 0) { + morphAttributes[key] = array; + hasMorphAttributes = true; + } + } + + if (hasMorphAttributes) { + data.data.morphAttributes = morphAttributes; + data.data.morphTargetsRelative = this.morphTargetsRelative; + } + + const groups = this.groups; + + if (groups.length > 0) { + data.data.groups = JSON.parse(JSON.stringify(groups)); + } + + const boundingSphere = this.boundingSphere; + + if (boundingSphere !== null) { + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + } + + return data; + } + + clone() { + /* + // Handle primitives + const parameters = this.parameters; + if ( parameters !== undefined ) { + const values = []; + for ( const key in parameters ) { + values.push( parameters[ key ] ); + } + const geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + } + return new this.constructor().copy( this ); + */ + return new BufferGeometry().copy(this); + } + + copy(source) { + // reset + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; // used for storing cloned, shared data + + const data = {}; // name + + this.name = source.name; // index + + const index = source.index; + + if (index !== null) { + this.setIndex(index.clone(data)); + } // attributes + + + const attributes = source.attributes; + + for (const name in attributes) { + const attribute = attributes[name]; + this.setAttribute(name, attribute.clone(data)); + } // morph attributes + + + const morphAttributes = source.morphAttributes; + + for (const name in morphAttributes) { + const array = []; + const morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes + + for (let i = 0, l = morphAttribute.length; i < l; i++) { + array.push(morphAttribute[i].clone(data)); + } + + this.morphAttributes[name] = array; + } + + this.morphTargetsRelative = source.morphTargetsRelative; // groups + + const groups = source.groups; + + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + this.addGroup(group.start, group.count, group.materialIndex); + } // bounding box + + + const boundingBox = source.boundingBox; + + if (boundingBox !== null) { + this.boundingBox = boundingBox.clone(); + } // bounding sphere + + + const boundingSphere = source.boundingSphere; + + if (boundingSphere !== null) { + this.boundingSphere = boundingSphere.clone(); + } // draw range + + + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; // user data + + this.userData = source.userData; + return this; + } + + dispose() { + this.dispatchEvent({ + type: 'dispose' + }); + } + + } + + BufferGeometry.prototype.isBufferGeometry = true; + + const _inverseMatrix$2 = /*@__PURE__*/new Matrix4(); + + const _ray$2 = /*@__PURE__*/new Ray(); + + const _sphere$3 = /*@__PURE__*/new Sphere(); + + const _vA$1 = /*@__PURE__*/new Vector3(); + + const _vB$1 = /*@__PURE__*/new Vector3(); + + const _vC$1 = /*@__PURE__*/new Vector3(); + + const _tempA = /*@__PURE__*/new Vector3(); + + const _tempB = /*@__PURE__*/new Vector3(); + + const _tempC = /*@__PURE__*/new Vector3(); + + const _morphA = /*@__PURE__*/new Vector3(); + + const _morphB = /*@__PURE__*/new Vector3(); + + const _morphC = /*@__PURE__*/new Vector3(); + + const _uvA$1 = /*@__PURE__*/new Vector2(); + + const _uvB$1 = /*@__PURE__*/new Vector2(); + + const _uvC$1 = /*@__PURE__*/new Vector2(); + + const _intersectionPoint = /*@__PURE__*/new Vector3(); + + const _intersectionPointWorld = /*@__PURE__*/new Vector3(); + + class Mesh extends Object3D { + constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) { + super(); + this.type = 'Mesh'; + this.geometry = geometry; + this.material = material; + this.updateMorphTargets(); + } + + copy(source) { + super.copy(source); + + if (source.morphTargetInfluences !== undefined) { + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + } + + if (source.morphTargetDictionary !== undefined) { + this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary); + } + + this.material = source.material; + this.geometry = source.geometry; + return this; + } + + updateMorphTargets() { + const geometry = this.geometry; + + if (geometry.isBufferGeometry) { + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + + if (morphAttribute !== undefined) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } else { + const morphTargets = geometry.morphTargets; + + if (morphTargets !== undefined && morphTargets.length > 0) { + console.error('THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + } + } + + raycast(raycaster, intersects) { + const geometry = this.geometry; + const material = this.material; + const matrixWorld = this.matrixWorld; + if (material === undefined) return; // Checking boundingSphere distance to ray + + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + + _sphere$3.copy(geometry.boundingSphere); + + _sphere$3.applyMatrix4(matrixWorld); + + if (raycaster.ray.intersectsSphere(_sphere$3) === false) return; // + + _inverseMatrix$2.copy(matrixWorld).invert(); + + _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2); // Check boundingBox before continuing + + + if (geometry.boundingBox !== null) { + if (_ray$2.intersectsBox(geometry.boundingBox) === false) return; + } + + let intersection; + + if (geometry.isBufferGeometry) { + const index = geometry.index; + const position = geometry.attributes.position; + const morphPosition = geometry.morphAttributes.position; + const morphTargetsRelative = geometry.morphTargetsRelative; + const uv = geometry.attributes.uv; + const uv2 = geometry.attributes.uv2; + const groups = geometry.groups; + const drawRange = geometry.drawRange; + + if (index !== null) { + // indexed buffer geometry + if (Array.isArray(material)) { + for (let i = 0, il = groups.length; i < il; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + const start = Math.max(group.start, drawRange.start); + const end = Math.min(group.start + group.count, drawRange.start + drawRange.count); + + for (let j = start, jl = end; j < jl; j += 3) { + const a = index.getX(j); + const b = index.getX(j + 1); + const c = index.getX(j + 2); + intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c); + + if (intersection) { + intersection.faceIndex = Math.floor(j / 3); // triangle number in indexed buffer semantics + + intersection.face.materialIndex = group.materialIndex; + intersects.push(intersection); + } + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + + for (let i = start, il = end; i < il; i += 3) { + const a = index.getX(i); + const b = index.getX(i + 1); + const c = index.getX(i + 2); + intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c); + + if (intersection) { + intersection.faceIndex = Math.floor(i / 3); // triangle number in indexed buffer semantics + + intersects.push(intersection); + } + } + } + } else if (position !== undefined) { + // non-indexed buffer geometry + if (Array.isArray(material)) { + for (let i = 0, il = groups.length; i < il; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + const start = Math.max(group.start, drawRange.start); + const end = Math.min(group.start + group.count, drawRange.start + drawRange.count); + + for (let j = start, jl = end; j < jl; j += 3) { + const a = j; + const b = j + 1; + const c = j + 2; + intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c); + + if (intersection) { + intersection.faceIndex = Math.floor(j / 3); // triangle number in non-indexed buffer semantics + + intersection.face.materialIndex = group.materialIndex; + intersects.push(intersection); + } + } + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(position.count, drawRange.start + drawRange.count); + + for (let i = start, il = end; i < il; i += 3) { + const a = i; + const b = i + 1; + const c = i + 2; + intersection = checkBufferGeometryIntersection(this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c); + + if (intersection) { + intersection.faceIndex = Math.floor(i / 3); // triangle number in non-indexed buffer semantics + + intersects.push(intersection); + } + } + } + } + } else if (geometry.isGeometry) { + console.error('THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + } + + } + + Mesh.prototype.isMesh = true; + + function checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) { + let intersect; + + if (material.side === BackSide) { + intersect = ray.intersectTriangle(pC, pB, pA, true, point); + } else { + intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point); + } + + if (intersect === null) return null; + + _intersectionPointWorld.copy(point); + + _intersectionPointWorld.applyMatrix4(object.matrixWorld); + + const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld); + if (distance < raycaster.near || distance > raycaster.far) return null; + return { + distance: distance, + point: _intersectionPointWorld.clone(), + object: object + }; + } + + function checkBufferGeometryIntersection(object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c) { + _vA$1.fromBufferAttribute(position, a); + + _vB$1.fromBufferAttribute(position, b); + + _vC$1.fromBufferAttribute(position, c); + + const morphInfluences = object.morphTargetInfluences; + + if (morphPosition && morphInfluences) { + _morphA.set(0, 0, 0); + + _morphB.set(0, 0, 0); + + _morphC.set(0, 0, 0); + + for (let i = 0, il = morphPosition.length; i < il; i++) { + const influence = morphInfluences[i]; + const morphAttribute = morphPosition[i]; + if (influence === 0) continue; + + _tempA.fromBufferAttribute(morphAttribute, a); + + _tempB.fromBufferAttribute(morphAttribute, b); + + _tempC.fromBufferAttribute(morphAttribute, c); + + if (morphTargetsRelative) { + _morphA.addScaledVector(_tempA, influence); + + _morphB.addScaledVector(_tempB, influence); + + _morphC.addScaledVector(_tempC, influence); + } else { + _morphA.addScaledVector(_tempA.sub(_vA$1), influence); + + _morphB.addScaledVector(_tempB.sub(_vB$1), influence); + + _morphC.addScaledVector(_tempC.sub(_vC$1), influence); + } + } + + _vA$1.add(_morphA); + + _vB$1.add(_morphB); + + _vC$1.add(_morphC); + } + + if (object.isSkinnedMesh) { + object.boneTransform(a, _vA$1); + object.boneTransform(b, _vB$1); + object.boneTransform(c, _vC$1); + } + + const intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint); + + if (intersection) { + if (uv) { + _uvA$1.fromBufferAttribute(uv, a); + + _uvB$1.fromBufferAttribute(uv, b); + + _uvC$1.fromBufferAttribute(uv, c); + + intersection.uv = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2()); + } + + if (uv2) { + _uvA$1.fromBufferAttribute(uv2, a); + + _uvB$1.fromBufferAttribute(uv2, b); + + _uvC$1.fromBufferAttribute(uv2, c); + + intersection.uv2 = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2()); + } + + const face = { + a: a, + b: b, + c: c, + normal: new Vector3(), + materialIndex: 0 + }; + Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal); + intersection.face = face; + } + + return intersection; + } + + class BoxGeometry extends BufferGeometry { + constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) { + super(); + this.type = 'BoxGeometry'; + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + const scope = this; // segments + + widthSegments = Math.floor(widthSegments); + heightSegments = Math.floor(heightSegments); + depthSegments = Math.floor(depthSegments); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // helper variables + + let numberOfVertices = 0; + let groupStart = 0; // build each side of the box geometry + + buildPlane('z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0); // px + + buildPlane('z', 'y', 'x', 1, -1, depth, height, -width, depthSegments, heightSegments, 1); // nx + + buildPlane('x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2); // py + + buildPlane('x', 'z', 'y', 1, -1, width, depth, -height, widthSegments, depthSegments, 3); // ny + + buildPlane('x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4); // pz + + buildPlane('x', 'y', 'z', -1, -1, width, height, -depth, widthSegments, heightSegments, 5); // nz + // build geometry + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + + function buildPlane(u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex) { + const segmentWidth = width / gridX; + const segmentHeight = height / gridY; + const widthHalf = width / 2; + const heightHalf = height / 2; + const depthHalf = depth / 2; + const gridX1 = gridX + 1; + const gridY1 = gridY + 1; + let vertexCounter = 0; + let groupCount = 0; + const vector = new Vector3(); // generate vertices, normals and uvs + + for (let iy = 0; iy < gridY1; iy++) { + const y = iy * segmentHeight - heightHalf; + + for (let ix = 0; ix < gridX1; ix++) { + const x = ix * segmentWidth - widthHalf; // set values to correct vector component + + vector[u] = x * udir; + vector[v] = y * vdir; + vector[w] = depthHalf; // now apply vector to vertex buffer + + vertices.push(vector.x, vector.y, vector.z); // set values to correct vector component + + vector[u] = 0; + vector[v] = 0; + vector[w] = depth > 0 ? 1 : -1; // now apply vector to normal buffer + + normals.push(vector.x, vector.y, vector.z); // uvs + + uvs.push(ix / gridX); + uvs.push(1 - iy / gridY); // counters + + vertexCounter += 1; + } + } // indices + // 1. you need three indices to draw a single face + // 2. a single segment consists of two faces + // 3. so we need to generate six (2*3) indices per segment + + + for (let iy = 0; iy < gridY; iy++) { + for (let ix = 0; ix < gridX; ix++) { + const a = numberOfVertices + ix + gridX1 * iy; + const b = numberOfVertices + ix + gridX1 * (iy + 1); + const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1); + const d = numberOfVertices + (ix + 1) + gridX1 * iy; // faces + + indices.push(a, b, d); + indices.push(b, c, d); // increase counter + + groupCount += 6; + } + } // add a group to the geometry. this will ensure multi material support + + + scope.addGroup(groupStart, groupCount, materialIndex); // calculate new start value for groups + + groupStart += groupCount; // update total number of vertices + + numberOfVertices += vertexCounter; + } + } + + static fromJSON(data) { + return new BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments); + } + + } + + /** + * Uniform Utilities + */ + function cloneUniforms(src) { + const dst = {}; + + for (const u in src) { + dst[u] = {}; + + for (const p in src[u]) { + const property = src[u][p]; + + if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) { + dst[u][p] = property.clone(); + } else if (Array.isArray(property)) { + dst[u][p] = property.slice(); + } else { + dst[u][p] = property; + } + } + } + + return dst; + } + function mergeUniforms(uniforms) { + const merged = {}; + + for (let u = 0; u < uniforms.length; u++) { + const tmp = cloneUniforms(uniforms[u]); + + for (const p in tmp) { + merged[p] = tmp[p]; + } + } + + return merged; + } // Legacy + + const UniformsUtils = { + clone: cloneUniforms, + merge: mergeUniforms + }; + + var default_vertex = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; + + var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; + + /** + * parameters = { + * defines: { "label" : "value" }, + * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, + * + * fragmentShader: , + * vertexShader: , + * + * wireframe: , + * wireframeLinewidth: , + * + * lights: + * } + */ + + class ShaderMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'ShaderMaterial'; + this.defines = {}; + this.uniforms = {}; + this.vertexShader = default_vertex; + this.fragmentShader = default_fragment; + this.linewidth = 1; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.fog = false; // set to use scene fog + + this.lights = false; // set to use scene lights + + this.clipping = false; // set to use user-defined clipping planes + + this.extensions = { + derivatives: false, + // set to use derivatives + fragDepth: false, + // set to use fragment depth values + drawBuffers: false, + // set to use draw buffers + shaderTextureLOD: false // set to use shader texture LOD + + }; // When rendered geometry doesn't include these attributes but the material does, + // use these default values in WebGL. This avoids errors when buffer data is missing. + + this.defaultAttributeValues = { + 'color': [1, 1, 1], + 'uv': [0, 0], + 'uv2': [0, 0] + }; + this.index0AttributeName = undefined; + this.uniformsNeedUpdate = false; + this.glslVersion = null; + + if (parameters !== undefined) { + if (parameters.attributes !== undefined) { + console.error('THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.'); + } + + this.setValues(parameters); + } + } + + copy(source) { + super.copy(source); + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + this.uniforms = cloneUniforms(source.uniforms); + this.defines = Object.assign({}, source.defines); + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.lights = source.lights; + this.clipping = source.clipping; + this.extensions = Object.assign({}, source.extensions); + this.glslVersion = source.glslVersion; + return this; + } + + toJSON(meta) { + const data = super.toJSON(meta); + data.glslVersion = this.glslVersion; + data.uniforms = {}; + + for (const name in this.uniforms) { + const uniform = this.uniforms[name]; + const value = uniform.value; + + if (value && value.isTexture) { + data.uniforms[name] = { + type: 't', + value: value.toJSON(meta).uuid + }; + } else if (value && value.isColor) { + data.uniforms[name] = { + type: 'c', + value: value.getHex() + }; + } else if (value && value.isVector2) { + data.uniforms[name] = { + type: 'v2', + value: value.toArray() + }; + } else if (value && value.isVector3) { + data.uniforms[name] = { + type: 'v3', + value: value.toArray() + }; + } else if (value && value.isVector4) { + data.uniforms[name] = { + type: 'v4', + value: value.toArray() + }; + } else if (value && value.isMatrix3) { + data.uniforms[name] = { + type: 'm3', + value: value.toArray() + }; + } else if (value && value.isMatrix4) { + data.uniforms[name] = { + type: 'm4', + value: value.toArray() + }; + } else { + data.uniforms[name] = { + value: value + }; // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far + } + } + + if (Object.keys(this.defines).length > 0) data.defines = this.defines; + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + const extensions = {}; + + for (const key in this.extensions) { + if (this.extensions[key] === true) extensions[key] = true; + } + + if (Object.keys(extensions).length > 0) data.extensions = extensions; + return data; + } + + } + + ShaderMaterial.prototype.isShaderMaterial = true; + + class Camera extends Object3D { + constructor() { + super(); + this.type = 'Camera'; + this.matrixWorldInverse = new Matrix4(); + this.projectionMatrix = new Matrix4(); + this.projectionMatrixInverse = new Matrix4(); + } + + copy(source, recursive) { + super.copy(source, recursive); + this.matrixWorldInverse.copy(source.matrixWorldInverse); + this.projectionMatrix.copy(source.projectionMatrix); + this.projectionMatrixInverse.copy(source.projectionMatrixInverse); + return this; + } + + getWorldDirection(target) { + this.updateWorldMatrix(true, false); + const e = this.matrixWorld.elements; + return target.set(-e[8], -e[9], -e[10]).normalize(); + } + + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + + updateWorldMatrix(updateParents, updateChildren) { + super.updateWorldMatrix(updateParents, updateChildren); + this.matrixWorldInverse.copy(this.matrixWorld).invert(); + } + + clone() { + return new this.constructor().copy(this); + } + + } + + Camera.prototype.isCamera = true; + + class PerspectiveCamera extends Camera { + constructor(fov = 50, aspect = 1, near = 0.1, far = 2000) { + super(); + this.type = 'PerspectiveCamera'; + this.fov = fov; + this.zoom = 1; + this.near = near; + this.far = far; + this.focus = 10; + this.aspect = aspect; + this.view = null; + this.filmGauge = 35; // width of the film (default in millimeters) + + this.filmOffset = 0; // horizontal film offset (same unit as gauge) + + this.updateProjectionMatrix(); + } + + copy(source, recursive) { + super.copy(source, recursive); + this.fov = source.fov; + this.zoom = source.zoom; + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign({}, source.view); + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + return this; + } + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + + + setFocalLength(focalLength) { + /** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */ + const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope); + this.updateProjectionMatrix(); + } + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + + + getFocalLength() { + const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov); + return 0.5 * this.getFilmHeight() / vExtentSlope; + } + + getEffectiveFOV() { + return RAD2DEG * 2 * Math.atan(Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom); + } + + getFilmWidth() { + // film not completely covered in portrait format (aspect < 1) + return this.filmGauge * Math.min(this.aspect, 1); + } + + getFilmHeight() { + // film not completely covered in landscape format (aspect > 1) + return this.filmGauge / Math.max(this.aspect, 1); + } + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * const w = 1920; + * const h = 1080; + * const fullWidth = w * 3; + * const fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + + + setViewOffset(fullWidth, fullHeight, x, y, width, height) { + this.aspect = fullWidth / fullHeight; + + if (this.view === null) { + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + this.updateProjectionMatrix(); + } + + clearViewOffset() { + if (this.view !== null) { + this.view.enabled = false; + } + + this.updateProjectionMatrix(); + } + + updateProjectionMatrix() { + const near = this.near; + let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom; + let height = 2 * top; + let width = this.aspect * height; + let left = -0.5 * width; + const view = this.view; + + if (this.view !== null && this.view.enabled) { + const fullWidth = view.fullWidth, + fullHeight = view.fullHeight; + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + } + + const skew = this.filmOffset; + if (skew !== 0) left += near * skew / this.getFilmWidth(); + this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far); + this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + + toJSON(meta) { + const data = super.toJSON(meta); + data.object.fov = this.fov; + data.object.zoom = this.zoom; + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + data.object.aspect = this.aspect; + if (this.view !== null) data.object.view = Object.assign({}, this.view); + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + return data; + } + + } + + PerspectiveCamera.prototype.isPerspectiveCamera = true; + + const fov = 90, + aspect = 1; + + class CubeCamera extends Object3D { + constructor(near, far, renderTarget) { + super(); + this.type = 'CubeCamera'; + + if (renderTarget.isWebGLCubeRenderTarget !== true) { + console.error('THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.'); + return; + } + + this.renderTarget = renderTarget; + const cameraPX = new PerspectiveCamera(fov, aspect, near, far); + cameraPX.layers = this.layers; + cameraPX.up.set(0, -1, 0); + cameraPX.lookAt(new Vector3(1, 0, 0)); + this.add(cameraPX); + const cameraNX = new PerspectiveCamera(fov, aspect, near, far); + cameraNX.layers = this.layers; + cameraNX.up.set(0, -1, 0); + cameraNX.lookAt(new Vector3(-1, 0, 0)); + this.add(cameraNX); + const cameraPY = new PerspectiveCamera(fov, aspect, near, far); + cameraPY.layers = this.layers; + cameraPY.up.set(0, 0, 1); + cameraPY.lookAt(new Vector3(0, 1, 0)); + this.add(cameraPY); + const cameraNY = new PerspectiveCamera(fov, aspect, near, far); + cameraNY.layers = this.layers; + cameraNY.up.set(0, 0, -1); + cameraNY.lookAt(new Vector3(0, -1, 0)); + this.add(cameraNY); + const cameraPZ = new PerspectiveCamera(fov, aspect, near, far); + cameraPZ.layers = this.layers; + cameraPZ.up.set(0, -1, 0); + cameraPZ.lookAt(new Vector3(0, 0, 1)); + this.add(cameraPZ); + const cameraNZ = new PerspectiveCamera(fov, aspect, near, far); + cameraNZ.layers = this.layers; + cameraNZ.up.set(0, -1, 0); + cameraNZ.lookAt(new Vector3(0, 0, -1)); + this.add(cameraNZ); + } + + update(renderer, scene) { + if (this.parent === null) this.updateMatrixWorld(); + const renderTarget = this.renderTarget; + const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children; + const currentXrEnabled = renderer.xr.enabled; + const currentRenderTarget = renderer.getRenderTarget(); + renderer.xr.enabled = false; + const generateMipmaps = renderTarget.texture.generateMipmaps; + renderTarget.texture.generateMipmaps = false; + renderer.setRenderTarget(renderTarget, 0); + renderer.render(scene, cameraPX); + renderer.setRenderTarget(renderTarget, 1); + renderer.render(scene, cameraNX); + renderer.setRenderTarget(renderTarget, 2); + renderer.render(scene, cameraPY); + renderer.setRenderTarget(renderTarget, 3); + renderer.render(scene, cameraNY); + renderer.setRenderTarget(renderTarget, 4); + renderer.render(scene, cameraPZ); + renderTarget.texture.generateMipmaps = generateMipmaps; + renderer.setRenderTarget(renderTarget, 5); + renderer.render(scene, cameraNZ); + renderer.setRenderTarget(currentRenderTarget); + renderer.xr.enabled = currentXrEnabled; + } + + } + + class CubeTexture extends Texture { + constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) { + images = images !== undefined ? images : []; + mapping = mapping !== undefined ? mapping : CubeReflectionMapping; + format = format !== undefined ? format : RGBFormat; + super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding); + this.flipY = false; + } + + get images() { + return this.image; + } + + set images(value) { + this.image = value; + } + + } + + CubeTexture.prototype.isCubeTexture = true; + + class WebGLCubeRenderTarget extends WebGLRenderTarget { + constructor(size, options, dummy) { + if (Number.isInteger(options)) { + console.warn('THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )'); + options = dummy; + } + + super(size, size, options); + options = options || {}; // By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js) + // in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words, + // in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly. + // three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped + // and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture + // as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures). + + this.texture = new CubeTexture(undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding); + this.texture.isRenderTargetTexture = true; + this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; + this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; + this.texture._needsFlipEnvMap = false; + } + + fromEquirectangularTexture(renderer, texture) { + this.texture.type = texture.type; + this.texture.format = RGBAFormat; // see #18859 + + this.texture.encoding = texture.encoding; + this.texture.generateMipmaps = texture.generateMipmaps; + this.texture.minFilter = texture.minFilter; + this.texture.magFilter = texture.magFilter; + const shader = { + uniforms: { + tEquirect: { + value: null + } + }, + vertexShader: + /* glsl */ + ` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `, + fragmentShader: + /* glsl */ + ` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + ` + }; + const geometry = new BoxGeometry(5, 5, 5); + const material = new ShaderMaterial({ + name: 'CubemapFromEquirect', + uniforms: cloneUniforms(shader.uniforms), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader, + side: BackSide, + blending: NoBlending + }); + material.uniforms.tEquirect.value = texture; + const mesh = new Mesh(geometry, material); + const currentMinFilter = texture.minFilter; // Avoid blurred poles + + if (texture.minFilter === LinearMipmapLinearFilter) texture.minFilter = LinearFilter; + const camera = new CubeCamera(1, 10, this); + camera.update(renderer, mesh); + texture.minFilter = currentMinFilter; + mesh.geometry.dispose(); + mesh.material.dispose(); + return this; + } + + clear(renderer, color, depth, stencil) { + const currentRenderTarget = renderer.getRenderTarget(); + + for (let i = 0; i < 6; i++) { + renderer.setRenderTarget(this, i); + renderer.clear(color, depth, stencil); + } + + renderer.setRenderTarget(currentRenderTarget); + } + + } + + WebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true; + + const _vector1 = /*@__PURE__*/new Vector3(); + + const _vector2 = /*@__PURE__*/new Vector3(); + + const _normalMatrix = /*@__PURE__*/new Matrix3(); + + class Plane { + constructor(normal = new Vector3(1, 0, 0), constant = 0) { + // normal is assumed to be normalized + this.normal = normal; + this.constant = constant; + } + + set(normal, constant) { + this.normal.copy(normal); + this.constant = constant; + return this; + } + + setComponents(x, y, z, w) { + this.normal.set(x, y, z); + this.constant = w; + return this; + } + + setFromNormalAndCoplanarPoint(normal, point) { + this.normal.copy(normal); + this.constant = -point.dot(this.normal); + return this; + } + + setFromCoplanarPoints(a, b, c) { + const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize(); // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? + + + this.setFromNormalAndCoplanarPoint(normal, a); + return this; + } + + copy(plane) { + this.normal.copy(plane.normal); + this.constant = plane.constant; + return this; + } + + normalize() { + // Note: will lead to a divide by zero if the plane is invalid. + const inverseNormalLength = 1.0 / this.normal.length(); + this.normal.multiplyScalar(inverseNormalLength); + this.constant *= inverseNormalLength; + return this; + } + + negate() { + this.constant *= -1; + this.normal.negate(); + return this; + } + + distanceToPoint(point) { + return this.normal.dot(point) + this.constant; + } + + distanceToSphere(sphere) { + return this.distanceToPoint(sphere.center) - sphere.radius; + } + + projectPoint(point, target) { + return target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point); + } + + intersectLine(line, target) { + const direction = line.delta(_vector1); + const denominator = this.normal.dot(direction); + + if (denominator === 0) { + // line is coplanar, return origin + if (this.distanceToPoint(line.start) === 0) { + return target.copy(line.start); + } // Unsure if this is the correct method to handle this case. + + + return null; + } + + const t = -(line.start.dot(this.normal) + this.constant) / denominator; + + if (t < 0 || t > 1) { + return null; + } + + return target.copy(direction).multiplyScalar(t).add(line.start); + } + + intersectsLine(line) { + // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. + const startSign = this.distanceToPoint(line.start); + const endSign = this.distanceToPoint(line.end); + return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0; + } + + intersectsBox(box) { + return box.intersectsPlane(this); + } + + intersectsSphere(sphere) { + return sphere.intersectsPlane(this); + } + + coplanarPoint(target) { + return target.copy(this.normal).multiplyScalar(-this.constant); + } + + applyMatrix4(matrix, optionalNormalMatrix) { + const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix); + + const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix); + const normal = this.normal.applyMatrix3(normalMatrix).normalize(); + this.constant = -referencePoint.dot(normal); + return this; + } + + translate(offset) { + this.constant -= offset.dot(this.normal); + return this; + } + + equals(plane) { + return plane.normal.equals(this.normal) && plane.constant === this.constant; + } + + clone() { + return new this.constructor().copy(this); + } + + } + + Plane.prototype.isPlane = true; + + const _sphere$2 = /*@__PURE__*/new Sphere(); + + const _vector$7 = /*@__PURE__*/new Vector3(); + + class Frustum { + constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) { + this.planes = [p0, p1, p2, p3, p4, p5]; + } + + set(p0, p1, p2, p3, p4, p5) { + const planes = this.planes; + planes[0].copy(p0); + planes[1].copy(p1); + planes[2].copy(p2); + planes[3].copy(p3); + planes[4].copy(p4); + planes[5].copy(p5); + return this; + } + + copy(frustum) { + const planes = this.planes; + + for (let i = 0; i < 6; i++) { + planes[i].copy(frustum.planes[i]); + } + + return this; + } + + setFromProjectionMatrix(m) { + const planes = this.planes; + const me = m.elements; + const me0 = me[0], + me1 = me[1], + me2 = me[2], + me3 = me[3]; + const me4 = me[4], + me5 = me[5], + me6 = me[6], + me7 = me[7]; + const me8 = me[8], + me9 = me[9], + me10 = me[10], + me11 = me[11]; + const me12 = me[12], + me13 = me[13], + me14 = me[14], + me15 = me[15]; + planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize(); + planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize(); + planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize(); + planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize(); + planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize(); + planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize(); + return this; + } + + intersectsObject(object) { + const geometry = object.geometry; + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + + _sphere$2.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld); + + return this.intersectsSphere(_sphere$2); + } + + intersectsSprite(sprite) { + _sphere$2.center.set(0, 0, 0); + + _sphere$2.radius = 0.7071067811865476; + + _sphere$2.applyMatrix4(sprite.matrixWorld); + + return this.intersectsSphere(_sphere$2); + } + + intersectsSphere(sphere) { + const planes = this.planes; + const center = sphere.center; + const negRadius = -sphere.radius; + + for (let i = 0; i < 6; i++) { + const distance = planes[i].distanceToPoint(center); + + if (distance < negRadius) { + return false; + } + } + + return true; + } + + intersectsBox(box) { + const planes = this.planes; + + for (let i = 0; i < 6; i++) { + const plane = planes[i]; // corner at max distance + + _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x; + _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y; + _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z; + + if (plane.distanceToPoint(_vector$7) < 0) { + return false; + } + } + + return true; + } + + containsPoint(point) { + const planes = this.planes; + + for (let i = 0; i < 6; i++) { + if (planes[i].distanceToPoint(point) < 0) { + return false; + } + } + + return true; + } + + clone() { + return new this.constructor().copy(this); + } + + } + + function WebGLAnimation() { + let context = null; + let isAnimating = false; + let animationLoop = null; + let requestId = null; + + function onAnimationFrame(time, frame) { + animationLoop(time, frame); + requestId = context.requestAnimationFrame(onAnimationFrame); + } + + return { + start: function () { + if (isAnimating === true) return; + if (animationLoop === null) return; + requestId = context.requestAnimationFrame(onAnimationFrame); + isAnimating = true; + }, + stop: function () { + context.cancelAnimationFrame(requestId); + isAnimating = false; + }, + setAnimationLoop: function (callback) { + animationLoop = callback; + }, + setContext: function (value) { + context = value; + } + }; + } + + function WebGLAttributes(gl, capabilities) { + const isWebGL2 = capabilities.isWebGL2; + const buffers = new WeakMap(); + + function createBuffer(attribute, bufferType) { + const array = attribute.array; + const usage = attribute.usage; + const buffer = gl.createBuffer(); + gl.bindBuffer(bufferType, buffer); + gl.bufferData(bufferType, array, usage); + attribute.onUploadCallback(); + let type = gl.FLOAT; + + if (array instanceof Float32Array) { + type = gl.FLOAT; + } else if (array instanceof Float64Array) { + console.warn('THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.'); + } else if (array instanceof Uint16Array) { + if (attribute.isFloat16BufferAttribute) { + if (isWebGL2) { + type = gl.HALF_FLOAT; + } else { + console.warn('THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.'); + } + } else { + type = gl.UNSIGNED_SHORT; + } + } else if (array instanceof Int16Array) { + type = gl.SHORT; + } else if (array instanceof Uint32Array) { + type = gl.UNSIGNED_INT; + } else if (array instanceof Int32Array) { + type = gl.INT; + } else if (array instanceof Int8Array) { + type = gl.BYTE; + } else if (array instanceof Uint8Array) { + type = gl.UNSIGNED_BYTE; + } else if (array instanceof Uint8ClampedArray) { + type = gl.UNSIGNED_BYTE; + } + + return { + buffer: buffer, + type: type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version + }; + } + + function updateBuffer(buffer, attribute, bufferType) { + const array = attribute.array; + const updateRange = attribute.updateRange; + gl.bindBuffer(bufferType, buffer); + + if (updateRange.count === -1) { + // Not using update ranges + gl.bufferSubData(bufferType, 0, array); + } else { + if (isWebGL2) { + gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array, updateRange.offset, updateRange.count); + } else { + gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array.subarray(updateRange.offset, updateRange.offset + updateRange.count)); + } + + updateRange.count = -1; // reset range + } + } // + + + function get(attribute) { + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; + return buffers.get(attribute); + } + + function remove(attribute) { + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; + const data = buffers.get(attribute); + + if (data) { + gl.deleteBuffer(data.buffer); + buffers.delete(attribute); + } + } + + function update(attribute, bufferType) { + if (attribute.isGLBufferAttribute) { + const cached = buffers.get(attribute); + + if (!cached || cached.version < attribute.version) { + buffers.set(attribute, { + buffer: attribute.buffer, + type: attribute.type, + bytesPerElement: attribute.elementSize, + version: attribute.version + }); + } + + return; + } + + if (attribute.isInterleavedBufferAttribute) attribute = attribute.data; + const data = buffers.get(attribute); + + if (data === undefined) { + buffers.set(attribute, createBuffer(attribute, bufferType)); + } else if (data.version < attribute.version) { + updateBuffer(data.buffer, attribute, bufferType); + data.version = attribute.version; + } + } + + return { + get: get, + remove: remove, + update: update + }; + } + + class PlaneGeometry extends BufferGeometry { + constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) { + super(); + this.type = 'PlaneGeometry'; + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + const width_half = width / 2; + const height_half = height / 2; + const gridX = Math.floor(widthSegments); + const gridY = Math.floor(heightSegments); + const gridX1 = gridX + 1; + const gridY1 = gridY + 1; + const segment_width = width / gridX; + const segment_height = height / gridY; // + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + + for (let iy = 0; iy < gridY1; iy++) { + const y = iy * segment_height - height_half; + + for (let ix = 0; ix < gridX1; ix++) { + const x = ix * segment_width - width_half; + vertices.push(x, -y, 0); + normals.push(0, 0, 1); + uvs.push(ix / gridX); + uvs.push(1 - iy / gridY); + } + } + + for (let iy = 0; iy < gridY; iy++) { + for (let ix = 0; ix < gridX; ix++) { + const a = ix + gridX1 * iy; + const b = ix + gridX1 * (iy + 1); + const c = ix + 1 + gridX1 * (iy + 1); + const d = ix + 1 + gridX1 * iy; + indices.push(a, b, d); + indices.push(b, c, d); + } + } + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + } + + static fromJSON(data) { + return new PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments); + } + + } + + var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif"; + + var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; + + var alphatest_fragment = "#ifdef USE_ALPHATEST\n\tif ( diffuseColor.a < alphaTest ) discard;\n#endif"; + + var alphatest_pars_fragment = "#ifdef USE_ALPHATEST\n\tuniform float alphaTest;\n#endif"; + + var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n\t#endif\n#endif"; + + var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; + + var begin_vertex = "vec3 transformed = vec3( position );"; + + var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif"; + + var bsdfs = "vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat V_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_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, 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 dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( V * 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}\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_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 dotVH = saturate( dot( geometry.viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\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 );\n\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_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"; + + var 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, float faceDirection ) {\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 ) * faceDirection;\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"; + + var 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"; + + var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; + + var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif"; + + var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif"; + + var color_fragment = "#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif"; + + var color_pars_fragment = "#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif"; + + var color_pars_vertex = "#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif"; + + var color_vertex = "#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif"; + + var 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 max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\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 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 USE_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}\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}"; + + var 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"; + + var 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"; + + var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; + + var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif"; + + var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; + + var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; + + var encodings_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; + + var 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}"; + + var 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\tenvColor = envMapTexelToLinear( envColor );\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#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"; + + var 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"; + + var 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"; + + var 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"; + + var 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"; + + var fog_vertex = "#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif"; + + var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif"; + + var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; + + var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\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"; + + var 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}"; + + var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tlightMapIrradiance *= PI;\n\t#endif\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif"; + + var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; + + var 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\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = 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\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = 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\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = 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"; + + var 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\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\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 getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.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 getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.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 getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.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\treturn irradiance;\n\t}\n#endif"; + + var envmap_physical_pars_fragment = "#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getIBLIrradiance( const in GeometricContext geometry ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec;\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\t\treflectVec = reflect( - viewDir, normal );\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\t#else\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\n\t\t\t#endif\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif"; + + var lights_toon_fragment = "ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;"; + + var lights_toon_pars_fragment = "varying vec3 vViewPosition;\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\treflectedLight.directDiffuse += irradiance * BRDF_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_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)"; + + var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; + + var lights_phong_pars_fragment = "varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tvec3 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\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength.rgb;\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_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)"; + + var 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.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularTintFactor = specularTint;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARTINTMAP\n\t\t\tspecularTintFactor *= specularTintMapTexelToLinear( texture2D( specularTintMap, vUv ) ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularTintFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularTintFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\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.sheenTint = sheenTint;\n#endif"; + + var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenTint;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.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}\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.roughness;\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( 0, 1, 0 ),\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#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += irradiance * BRDF_Sheen( material.roughness, directLight.direction, geometry, material.sheenTint );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_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_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 USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += 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}"; + + var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_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\tgetPointLightInfo( 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\tgetSpotLightInfo( 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\tgetDirectionalLightInfo( 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"; + + var 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 += getIBLIrradiance( geometry );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif"; + + var 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"; + + var 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"; + + var 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"; + + var 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"; + + var 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"; + + var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif"; + + var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; + + var 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"; + + var 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"; + + var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; + + var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; + + var 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"; + + var 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"; + + var 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"; + + var normal_fragment_begin = "float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#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 * faceDirection;\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 * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\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;"; + + var 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 * faceDirection;\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, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif"; + + var normal_pars_fragment = "#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"; + + var normal_pars_vertex = "#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"; + + var normal_vertex = "#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"; + + var 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, float faceDirection ) {\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\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif"; + + var clearcoat_normal_fragment_begin = "#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif"; + + var 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, faceDirection );\n\t#endif\n#endif"; + + var 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"; + + var output_fragment = "#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );"; + + var 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}"; + + var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; + + var 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;"; + + var dithering_fragment = "#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; + + var 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"; + + var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; + + var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; + + var 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 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.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 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.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"; + + var 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"; + + var 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"; + + var 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}"; + + var 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"; + + var 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"; + + var 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"; + + var 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"; + + var specularmap_fragment = "vec3 specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.rgb;\n#else\n\tspecularStrength = vec3( 1.0, 1.0, 1.0 );\n#endif"; + + var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; + + var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; + + var 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( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.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; }"; + + var transmission_fragment = "#ifdef USE_TRANSMISSION\n\tfloat transmissionAlpha = 1.0;\n\tfloat transmissionFactor = transmission;\n\tfloat thicknessFactor = thickness;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\n\t\tattenuationTint, attenuationDistance );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\n\ttransmissionAlpha = transmission.a;\n#endif"; + + var transmission_pars_fragment = "#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationTint;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( float roughness, float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\n\t\tif ( attenuationDistance == 0.0 ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\n\t\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\n\t\tvec3 attenuationColor, float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif"; + + var uv_pars_fragment = "#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif"; + + var 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"; + + var uv_vertex = "#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; + + var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif"; + + var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif"; + + var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\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"; + + var 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}"; + + var 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}"; + + var 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}"; + + var 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}"; + + var 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 \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}"; + + var 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}"; + + var 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 \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}"; + + var 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}"; + + var 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}"; + + var equirect_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; + + var 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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var 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}"; + + var 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 \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\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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var 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#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \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\t#include \n\t#include \n}"; + + var 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 \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_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_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var 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}"; + + var meshmatcap_frag = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\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\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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_vert = "#define MATCAP\nvarying vec3 vViewPosition;\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\tvViewPosition = - mvPosition.xyz;\n}"; + + var meshnormal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\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\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}"; + + var meshnormal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; + + var 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 \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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\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\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_frag = "#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularTint;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARTINTMAP\n\t\tuniform sampler2D specularTintMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenTint;\n#endif\nvarying vec3 vViewPosition;\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 \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\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_vert = "#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\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\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\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}"; + + var 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 \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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshtoon_vert = "#define TOON\nvarying vec3 vViewPosition;\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\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; + + var points_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\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var 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}"; + + var 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}"; + + var 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}"; + + var sprite_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \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\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var 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}"; + + const ShaderChunk = { + alphamap_fragment: alphamap_fragment, + alphamap_pars_fragment: alphamap_pars_fragment, + alphatest_fragment: alphatest_fragment, + alphatest_pars_fragment: alphatest_pars_fragment, + aomap_fragment: aomap_fragment, + aomap_pars_fragment: aomap_pars_fragment, + begin_vertex: begin_vertex, + beginnormal_vertex: beginnormal_vertex, + bsdfs: bsdfs, + bumpmap_pars_fragment: bumpmap_pars_fragment, + clipping_planes_fragment: clipping_planes_fragment, + clipping_planes_pars_fragment: clipping_planes_pars_fragment, + clipping_planes_pars_vertex: clipping_planes_pars_vertex, + clipping_planes_vertex: clipping_planes_vertex, + color_fragment: color_fragment, + color_pars_fragment: color_pars_fragment, + color_pars_vertex: color_pars_vertex, + color_vertex: color_vertex, + common: common, + cube_uv_reflection_fragment: cube_uv_reflection_fragment, + defaultnormal_vertex: defaultnormal_vertex, + displacementmap_pars_vertex: displacementmap_pars_vertex, + displacementmap_vertex: displacementmap_vertex, + emissivemap_fragment: emissivemap_fragment, + emissivemap_pars_fragment: emissivemap_pars_fragment, + encodings_fragment: encodings_fragment, + encodings_pars_fragment: encodings_pars_fragment, + envmap_fragment: envmap_fragment, + envmap_common_pars_fragment: envmap_common_pars_fragment, + envmap_pars_fragment: envmap_pars_fragment, + envmap_pars_vertex: envmap_pars_vertex, + envmap_physical_pars_fragment: envmap_physical_pars_fragment, + envmap_vertex: envmap_vertex, + fog_vertex: fog_vertex, + fog_pars_vertex: fog_pars_vertex, + fog_fragment: fog_fragment, + fog_pars_fragment: fog_pars_fragment, + gradientmap_pars_fragment: gradientmap_pars_fragment, + lightmap_fragment: lightmap_fragment, + lightmap_pars_fragment: lightmap_pars_fragment, + lights_lambert_vertex: lights_lambert_vertex, + lights_pars_begin: lights_pars_begin, + lights_toon_fragment: lights_toon_fragment, + lights_toon_pars_fragment: lights_toon_pars_fragment, + lights_phong_fragment: lights_phong_fragment, + lights_phong_pars_fragment: lights_phong_pars_fragment, + lights_physical_fragment: lights_physical_fragment, + lights_physical_pars_fragment: lights_physical_pars_fragment, + lights_fragment_begin: lights_fragment_begin, + lights_fragment_maps: lights_fragment_maps, + lights_fragment_end: lights_fragment_end, + logdepthbuf_fragment: logdepthbuf_fragment, + logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, + logdepthbuf_vertex: logdepthbuf_vertex, + map_fragment: map_fragment, + map_pars_fragment: map_pars_fragment, + map_particle_fragment: map_particle_fragment, + map_particle_pars_fragment: map_particle_pars_fragment, + metalnessmap_fragment: metalnessmap_fragment, + metalnessmap_pars_fragment: metalnessmap_pars_fragment, + morphnormal_vertex: morphnormal_vertex, + morphtarget_pars_vertex: morphtarget_pars_vertex, + morphtarget_vertex: morphtarget_vertex, + normal_fragment_begin: normal_fragment_begin, + normal_fragment_maps: normal_fragment_maps, + normal_pars_fragment: normal_pars_fragment, + normal_pars_vertex: normal_pars_vertex, + normal_vertex: normal_vertex, + normalmap_pars_fragment: normalmap_pars_fragment, + clearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin, + clearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps, + clearcoat_pars_fragment: clearcoat_pars_fragment, + output_fragment: output_fragment, + packing: packing, + premultiplied_alpha_fragment: premultiplied_alpha_fragment, + project_vertex: project_vertex, + dithering_fragment: dithering_fragment, + dithering_pars_fragment: dithering_pars_fragment, + roughnessmap_fragment: roughnessmap_fragment, + roughnessmap_pars_fragment: roughnessmap_pars_fragment, + shadowmap_pars_fragment: shadowmap_pars_fragment, + shadowmap_pars_vertex: shadowmap_pars_vertex, + shadowmap_vertex: shadowmap_vertex, + shadowmask_pars_fragment: shadowmask_pars_fragment, + skinbase_vertex: skinbase_vertex, + skinning_pars_vertex: skinning_pars_vertex, + skinning_vertex: skinning_vertex, + skinnormal_vertex: skinnormal_vertex, + specularmap_fragment: specularmap_fragment, + specularmap_pars_fragment: specularmap_pars_fragment, + tonemapping_fragment: tonemapping_fragment, + tonemapping_pars_fragment: tonemapping_pars_fragment, + transmission_fragment: transmission_fragment, + transmission_pars_fragment: transmission_pars_fragment, + uv_pars_fragment: uv_pars_fragment, + uv_pars_vertex: uv_pars_vertex, + uv_vertex: uv_vertex, + uv2_pars_fragment: uv2_pars_fragment, + uv2_pars_vertex: uv2_pars_vertex, + uv2_vertex: uv2_vertex, + worldpos_vertex: worldpos_vertex, + background_frag: background_frag, + background_vert: background_vert, + cube_frag: cube_frag, + cube_vert: cube_vert, + depth_frag: depth_frag, + depth_vert: depth_vert, + distanceRGBA_frag: distanceRGBA_frag, + distanceRGBA_vert: distanceRGBA_vert, + equirect_frag: equirect_frag, + equirect_vert: equirect_vert, + linedashed_frag: linedashed_frag, + linedashed_vert: linedashed_vert, + meshbasic_frag: meshbasic_frag, + meshbasic_vert: meshbasic_vert, + meshlambert_frag: meshlambert_frag, + meshlambert_vert: meshlambert_vert, + meshmatcap_frag: meshmatcap_frag, + meshmatcap_vert: meshmatcap_vert, + meshnormal_frag: meshnormal_frag, + meshnormal_vert: meshnormal_vert, + meshphong_frag: meshphong_frag, + meshphong_vert: meshphong_vert, + meshphysical_frag: meshphysical_frag, + meshphysical_vert: meshphysical_vert, + meshtoon_frag: meshtoon_frag, + meshtoon_vert: meshtoon_vert, + points_frag: points_frag, + points_vert: points_vert, + shadow_frag: shadow_frag, + shadow_vert: shadow_vert, + sprite_frag: sprite_frag, + sprite_vert: sprite_vert + }; + + /** + * Uniforms library for shared webgl shaders + */ + + const UniformsLib = { + common: { + diffuse: { + value: new Color(0xffffff) + }, + opacity: { + value: 1.0 + }, + map: { + value: null + }, + uvTransform: { + value: new Matrix3() + }, + uv2Transform: { + value: new Matrix3() + }, + alphaMap: { + value: null + }, + alphaTest: { + value: 0 + } + }, + specularmap: { + specularMap: { + value: null + } + }, + envmap: { + envMap: { + value: null + }, + flipEnvMap: { + value: -1 + }, + reflectivity: { + value: 1.0 + }, + // basic, lambert, phong + ior: { + value: 1.5 + }, + // standard, physical + refractionRatio: { + value: 0.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 Vector2(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: 0.00025 + }, + fogNear: { + value: 1 + }, + fogFar: { + value: 2000 + }, + fogColor: { + value: new Color(0xffffff) + } + }, + 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: {} + } + }, + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { + value: [], + properties: { + color: {}, + position: {}, + width: {}, + height: {} + } + }, + ltc_1: { + value: null + }, + ltc_2: { + value: null + } + }, + points: { + diffuse: { + value: new Color(0xffffff) + }, + opacity: { + value: 1.0 + }, + size: { + value: 1.0 + }, + scale: { + value: 1.0 + }, + map: { + value: null + }, + alphaMap: { + value: null + }, + alphaTest: { + value: 0 + }, + uvTransform: { + value: new Matrix3() + } + }, + sprite: { + diffuse: { + value: new Color(0xffffff) + }, + opacity: { + value: 1.0 + }, + center: { + value: new Vector2(0.5, 0.5) + }, + rotation: { + value: 0.0 + }, + map: { + value: null + }, + alphaMap: { + value: null + }, + alphaTest: { + value: 0 + }, + uvTransform: { + value: new Matrix3() + } + } + }; + + const ShaderLib = { + basic: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.fog]), + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + }, + lambert: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.fog, UniformsLib.lights, { + emissive: { + value: new Color(0x000000) + } + }]), + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + }, + phong: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.fog, UniformsLib.lights, { + emissive: { + value: new Color(0x000000) + }, + specular: { + value: new Color(0x111111) + }, + shininess: { + value: 30 + } + }]), + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + }, + standard: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.roughnessmap, UniformsLib.metalnessmap, UniformsLib.fog, UniformsLib.lights, { + emissive: { + value: new Color(0x000000) + }, + roughness: { + value: 1.0 + }, + metalness: { + value: 0.0 + }, + envMapIntensity: { + value: 1 + } // temporary + + }]), + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + }, + toon: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.gradientmap, UniformsLib.fog, UniformsLib.lights, { + emissive: { + value: new Color(0x000000) + } + }]), + vertexShader: ShaderChunk.meshtoon_vert, + fragmentShader: ShaderChunk.meshtoon_frag + }, + matcap: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.fog, { + matcap: { + value: null + } + }]), + vertexShader: ShaderChunk.meshmatcap_vert, + fragmentShader: ShaderChunk.meshmatcap_frag + }, + points: { + uniforms: mergeUniforms([UniformsLib.points, UniformsLib.fog]), + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + }, + dashed: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.fog, { + scale: { + value: 1 + }, + dashSize: { + value: 1 + }, + totalSize: { + value: 2 + } + }]), + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + }, + depth: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.displacementmap]), + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + }, + normal: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, { + opacity: { + value: 1.0 + } + }]), + vertexShader: ShaderChunk.meshnormal_vert, + fragmentShader: ShaderChunk.meshnormal_frag + }, + sprite: { + uniforms: mergeUniforms([UniformsLib.sprite, UniformsLib.fog]), + vertexShader: ShaderChunk.sprite_vert, + fragmentShader: ShaderChunk.sprite_frag + }, + background: { + uniforms: { + uvTransform: { + value: new Matrix3() + }, + t2D: { + value: null + } + }, + vertexShader: ShaderChunk.background_vert, + fragmentShader: ShaderChunk.background_frag + }, + + /* ------------------------------------------------------------------------- + // Cube map shader + ------------------------------------------------------------------------- */ + cube: { + uniforms: mergeUniforms([UniformsLib.envmap, { + opacity: { + value: 1.0 + } + }]), + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + }, + equirect: { + uniforms: { + tEquirect: { + value: null + } + }, + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + }, + distanceRGBA: { + uniforms: mergeUniforms([UniformsLib.common, UniformsLib.displacementmap, { + referencePosition: { + value: new Vector3() + }, + nearDistance: { + value: 1 + }, + farDistance: { + value: 1000 + } + }]), + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + }, + shadow: { + uniforms: mergeUniforms([UniformsLib.lights, UniformsLib.fog, { + color: { + value: new Color(0x00000) + }, + opacity: { + value: 1.0 + } + }]), + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + } + }; + ShaderLib.physical = { + uniforms: mergeUniforms([ShaderLib.standard.uniforms, { + clearcoat: { + value: 0 + }, + clearcoatMap: { + value: null + }, + clearcoatRoughness: { + value: 0 + }, + clearcoatRoughnessMap: { + value: null + }, + clearcoatNormalScale: { + value: new Vector2(1, 1) + }, + clearcoatNormalMap: { + value: null + }, + sheenTint: { + value: new Color(0x000000) + }, + transmission: { + value: 0 + }, + transmissionMap: { + value: null + }, + transmissionSamplerSize: { + value: new Vector2() + }, + transmissionSamplerMap: { + value: null + }, + thickness: { + value: 0 + }, + thicknessMap: { + value: null + }, + attenuationDistance: { + value: 0 + }, + attenuationTint: { + value: new Color(0x000000) + }, + specularIntensity: { + value: 0 + }, + specularIntensityMap: { + value: null + }, + specularTint: { + value: new Color(1, 1, 1) + }, + specularTintMap: { + value: null + } + }]), + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + }; + + function WebGLBackground(renderer, cubemaps, state, objects, premultipliedAlpha) { + const clearColor = new Color(0x000000); + let clearAlpha = 0; + let planeMesh; + let boxMesh; + let currentBackground = null; + let currentBackgroundVersion = 0; + let currentTonemapping = null; + + function render(renderList, scene) { + let forceClear = false; + let background = scene.isScene === true ? scene.background : null; + + if (background && background.isTexture) { + background = cubemaps.get(background); + } // Ignore background in AR + // TODO: Reconsider this. + + + const xr = renderer.xr; + const session = xr.getSession && xr.getSession(); + + if (session && session.environmentBlendMode === 'additive') { + background = null; + } + + if (background === null) { + setClear(clearColor, clearAlpha); + } else if (background && background.isColor) { + setClear(background, 1); + forceClear = true; + } + + if (renderer.autoClear || forceClear) { + renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil); + } + + if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) { + if (boxMesh === undefined) { + boxMesh = new Mesh(new BoxGeometry(1, 1, 1), new ShaderMaterial({ + name: 'BackgroundCubeMaterial', + uniforms: cloneUniforms(ShaderLib.cube.uniforms), + vertexShader: ShaderLib.cube.vertexShader, + fragmentShader: ShaderLib.cube.fragmentShader, + side: BackSide, + depthTest: false, + depthWrite: false, + fog: false + })); + boxMesh.geometry.deleteAttribute('normal'); + boxMesh.geometry.deleteAttribute('uv'); + + boxMesh.onBeforeRender = function (renderer, scene, camera) { + this.matrixWorld.copyPosition(camera.matrixWorld); + }; // enable code injection for non-built-in material + + + Object.defineProperty(boxMesh.material, 'envMap', { + get: function () { + return this.uniforms.envMap.value; + } + }); + objects.update(boxMesh); + } + + boxMesh.material.uniforms.envMap.value = background; + boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1; + + if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) { + boxMesh.material.needsUpdate = true; + currentBackground = background; + currentBackgroundVersion = background.version; + currentTonemapping = renderer.toneMapping; + } // push to the pre-sorted opaque render list + + + renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null); + } else if (background && background.isTexture) { + if (planeMesh === undefined) { + planeMesh = new Mesh(new PlaneGeometry(2, 2), new ShaderMaterial({ + name: 'BackgroundMaterial', + uniforms: cloneUniforms(ShaderLib.background.uniforms), + vertexShader: ShaderLib.background.vertexShader, + fragmentShader: ShaderLib.background.fragmentShader, + side: FrontSide, + depthTest: false, + depthWrite: false, + fog: false + })); + planeMesh.geometry.deleteAttribute('normal'); // enable code injection for non-built-in material + + Object.defineProperty(planeMesh.material, 'map', { + get: function () { + return this.uniforms.t2D.value; + } + }); + objects.update(planeMesh); + } + + planeMesh.material.uniforms.t2D.value = background; + + if (background.matrixAutoUpdate === true) { + background.updateMatrix(); + } + + planeMesh.material.uniforms.uvTransform.value.copy(background.matrix); + + if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) { + planeMesh.material.needsUpdate = true; + currentBackground = background; + currentBackgroundVersion = background.version; + currentTonemapping = renderer.toneMapping; + } // push to the pre-sorted opaque render list + + + renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null); + } + } + + function setClear(color, alpha) { + state.buffers.color.setClear(color.r, color.g, color.b, alpha, premultipliedAlpha); + } + + return { + getClearColor: function () { + return clearColor; + }, + setClearColor: function (color, alpha = 1) { + clearColor.set(color); + clearAlpha = alpha; + setClear(clearColor, clearAlpha); + }, + getClearAlpha: function () { + return clearAlpha; + }, + setClearAlpha: function (alpha) { + clearAlpha = alpha; + setClear(clearColor, clearAlpha); + }, + render: render + }; + } + + function WebGLBindingStates(gl, extensions, attributes, capabilities) { + const maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + const extension = capabilities.isWebGL2 ? null : extensions.get('OES_vertex_array_object'); + const vaoAvailable = capabilities.isWebGL2 || extension !== null; + const bindingStates = {}; + const defaultState = createBindingState(null); + let currentState = defaultState; + + function setup(object, material, program, geometry, index) { + let updateBuffers = false; + + if (vaoAvailable) { + const state = getBindingState(geometry, program, material); + + if (currentState !== state) { + currentState = state; + bindVertexArrayObject(currentState.object); + } + + updateBuffers = needsUpdate(geometry, index); + if (updateBuffers) saveCache(geometry, index); + } else { + const wireframe = material.wireframe === true; + + if (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) { + currentState.geometry = geometry.id; + currentState.program = program.id; + currentState.wireframe = wireframe; + updateBuffers = true; + } + } + + if (object.isInstancedMesh === true) { + updateBuffers = true; + } + + if (index !== null) { + attributes.update(index, gl.ELEMENT_ARRAY_BUFFER); + } + + if (updateBuffers) { + setupVertexAttributes(object, material, program, geometry); + + if (index !== null) { + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, attributes.get(index).buffer); + } + } + } + + function createVertexArrayObject() { + if (capabilities.isWebGL2) return gl.createVertexArray(); + return extension.createVertexArrayOES(); + } + + function bindVertexArrayObject(vao) { + if (capabilities.isWebGL2) return gl.bindVertexArray(vao); + return extension.bindVertexArrayOES(vao); + } + + function deleteVertexArrayObject(vao) { + if (capabilities.isWebGL2) return gl.deleteVertexArray(vao); + return extension.deleteVertexArrayOES(vao); + } + + function getBindingState(geometry, program, material) { + const wireframe = material.wireframe === true; + let programMap = bindingStates[geometry.id]; + + if (programMap === undefined) { + programMap = {}; + bindingStates[geometry.id] = programMap; + } + + let stateMap = programMap[program.id]; + + if (stateMap === undefined) { + stateMap = {}; + programMap[program.id] = stateMap; + } + + let state = stateMap[wireframe]; + + if (state === undefined) { + state = createBindingState(createVertexArrayObject()); + stateMap[wireframe] = state; + } + + return state; + } + + function createBindingState(vao) { + const newAttributes = []; + const enabledAttributes = []; + const attributeDivisors = []; + + for (let i = 0; i < maxVertexAttributes; i++) { + newAttributes[i] = 0; + enabledAttributes[i] = 0; + attributeDivisors[i] = 0; + } + + return { + // for backward compatibility on non-VAO support browser + geometry: null, + program: null, + wireframe: false, + newAttributes: newAttributes, + enabledAttributes: enabledAttributes, + attributeDivisors: attributeDivisors, + object: vao, + attributes: {}, + index: null + }; + } + + function needsUpdate(geometry, index) { + const cachedAttributes = currentState.attributes; + const geometryAttributes = geometry.attributes; + let attributesNum = 0; + + for (const key in geometryAttributes) { + const cachedAttribute = cachedAttributes[key]; + const geometryAttribute = geometryAttributes[key]; + if (cachedAttribute === undefined) return true; + if (cachedAttribute.attribute !== geometryAttribute) return true; + if (cachedAttribute.data !== geometryAttribute.data) return true; + attributesNum++; + } + + if (currentState.attributesNum !== attributesNum) return true; + if (currentState.index !== index) return true; + return false; + } + + function saveCache(geometry, index) { + const cache = {}; + const attributes = geometry.attributes; + let attributesNum = 0; + + for (const key in attributes) { + const attribute = attributes[key]; + const data = {}; + data.attribute = attribute; + + if (attribute.data) { + data.data = attribute.data; + } + + cache[key] = data; + attributesNum++; + } + + currentState.attributes = cache; + currentState.attributesNum = attributesNum; + currentState.index = index; + } + + function initAttributes() { + const newAttributes = currentState.newAttributes; + + for (let i = 0, il = newAttributes.length; i < il; i++) { + newAttributes[i] = 0; + } + } + + function enableAttribute(attribute) { + enableAttributeAndDivisor(attribute, 0); + } + + function enableAttributeAndDivisor(attribute, meshPerAttribute) { + const newAttributes = currentState.newAttributes; + const enabledAttributes = currentState.enabledAttributes; + const attributeDivisors = currentState.attributeDivisors; + newAttributes[attribute] = 1; + + if (enabledAttributes[attribute] === 0) { + gl.enableVertexAttribArray(attribute); + enabledAttributes[attribute] = 1; + } + + if (attributeDivisors[attribute] !== meshPerAttribute) { + const extension = capabilities.isWebGL2 ? gl : extensions.get('ANGLE_instanced_arrays'); + extension[capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE'](attribute, meshPerAttribute); + attributeDivisors[attribute] = meshPerAttribute; + } + } + + function disableUnusedAttributes() { + const newAttributes = currentState.newAttributes; + const enabledAttributes = currentState.enabledAttributes; + + for (let i = 0, il = enabledAttributes.length; i < il; i++) { + if (enabledAttributes[i] !== newAttributes[i]) { + gl.disableVertexAttribArray(i); + enabledAttributes[i] = 0; + } + } + } + + function vertexAttribPointer(index, size, type, normalized, stride, offset) { + if (capabilities.isWebGL2 === true && (type === gl.INT || type === gl.UNSIGNED_INT)) { + gl.vertexAttribIPointer(index, size, type, stride, offset); + } else { + gl.vertexAttribPointer(index, size, type, normalized, stride, offset); + } + } + + function setupVertexAttributes(object, material, program, geometry) { + if (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) { + if (extensions.get('ANGLE_instanced_arrays') === null) return; + } + + initAttributes(); + const geometryAttributes = geometry.attributes; + const programAttributes = program.getAttributes(); + const materialDefaultAttributeValues = material.defaultAttributeValues; + + for (const name in programAttributes) { + const programAttribute = programAttributes[name]; + + if (programAttribute.location >= 0) { + let geometryAttribute = geometryAttributes[name]; + + if (geometryAttribute === undefined) { + if (name === 'instanceMatrix' && object.instanceMatrix) geometryAttribute = object.instanceMatrix; + if (name === 'instanceColor' && object.instanceColor) geometryAttribute = object.instanceColor; + } + + if (geometryAttribute !== undefined) { + const normalized = geometryAttribute.normalized; + const size = geometryAttribute.itemSize; + const attribute = attributes.get(geometryAttribute); // TODO Attribute may not be available on context restore + + if (attribute === undefined) continue; + const buffer = attribute.buffer; + const type = attribute.type; + const bytesPerElement = attribute.bytesPerElement; + + if (geometryAttribute.isInterleavedBufferAttribute) { + const data = geometryAttribute.data; + const stride = data.stride; + const offset = geometryAttribute.offset; + + if (data && data.isInstancedInterleavedBuffer) { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute); + } + + if (object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined) { + geometry._maxInstanceCount = data.meshPerAttribute * data.count; + } + } else { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttribute(programAttribute.location + i); + } + } + + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + + for (let i = 0; i < programAttribute.locationSize; i++) { + vertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, stride * bytesPerElement, (offset + size / programAttribute.locationSize * i) * bytesPerElement); + } + } else { + if (geometryAttribute.isInstancedBufferAttribute) { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute); + } + + if (object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined) { + geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + } + } else { + for (let i = 0; i < programAttribute.locationSize; i++) { + enableAttribute(programAttribute.location + i); + } + } + + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + + for (let i = 0; i < programAttribute.locationSize; i++) { + vertexAttribPointer(programAttribute.location + i, size / programAttribute.locationSize, type, normalized, size * bytesPerElement, size / programAttribute.locationSize * i * bytesPerElement); + } + } + } else if (materialDefaultAttributeValues !== undefined) { + const value = materialDefaultAttributeValues[name]; + + if (value !== undefined) { + switch (value.length) { + case 2: + gl.vertexAttrib2fv(programAttribute.location, value); + break; + + case 3: + gl.vertexAttrib3fv(programAttribute.location, value); + break; + + case 4: + gl.vertexAttrib4fv(programAttribute.location, value); + break; + + default: + gl.vertexAttrib1fv(programAttribute.location, value); + } + } + } + } + } + + disableUnusedAttributes(); + } + + function dispose() { + reset(); + + for (const geometryId in bindingStates) { + const programMap = bindingStates[geometryId]; + + for (const programId in programMap) { + const stateMap = programMap[programId]; + + for (const wireframe in stateMap) { + deleteVertexArrayObject(stateMap[wireframe].object); + delete stateMap[wireframe]; + } + + delete programMap[programId]; + } + + delete bindingStates[geometryId]; + } + } + + function releaseStatesOfGeometry(geometry) { + if (bindingStates[geometry.id] === undefined) return; + const programMap = bindingStates[geometry.id]; + + for (const programId in programMap) { + const stateMap = programMap[programId]; + + for (const wireframe in stateMap) { + deleteVertexArrayObject(stateMap[wireframe].object); + delete stateMap[wireframe]; + } + + delete programMap[programId]; + } + + delete bindingStates[geometry.id]; + } + + function releaseStatesOfProgram(program) { + for (const geometryId in bindingStates) { + const programMap = bindingStates[geometryId]; + if (programMap[program.id] === undefined) continue; + const stateMap = programMap[program.id]; + + for (const wireframe in stateMap) { + deleteVertexArrayObject(stateMap[wireframe].object); + delete stateMap[wireframe]; + } + + delete programMap[program.id]; + } + } + + function reset() { + resetDefaultState(); + if (currentState === defaultState) return; + currentState = defaultState; + bindVertexArrayObject(currentState.object); + } // for backward-compatilibity + + + function resetDefaultState() { + defaultState.geometry = null; + defaultState.program = null; + defaultState.wireframe = false; + } + + return { + setup: setup, + reset: reset, + resetDefaultState: resetDefaultState, + dispose: dispose, + releaseStatesOfGeometry: releaseStatesOfGeometry, + releaseStatesOfProgram: releaseStatesOfProgram, + initAttributes: initAttributes, + enableAttribute: enableAttribute, + disableUnusedAttributes: disableUnusedAttributes + }; + } + + function WebGLBufferRenderer(gl, extensions, info, capabilities) { + const isWebGL2 = capabilities.isWebGL2; + let mode; + + function setMode(value) { + mode = value; + } + + function render(start, count) { + gl.drawArrays(mode, start, count); + info.update(count, mode, 1); + } + + function renderInstances(start, count, primcount) { + if (primcount === 0) return; + let extension, methodName; + + if (isWebGL2) { + extension = gl; + methodName = 'drawArraysInstanced'; + } else { + extension = extensions.get('ANGLE_instanced_arrays'); + methodName = 'drawArraysInstancedANGLE'; + + if (extension === null) { + console.error('THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.'); + return; + } + } + + extension[methodName](mode, start, count, primcount); + info.update(count, mode, primcount); + } // + + + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + } + + function WebGLCapabilities(gl, extensions, parameters) { + let maxAnisotropy; + + function getMaxAnisotropy() { + if (maxAnisotropy !== undefined) return maxAnisotropy; + + if (extensions.has('EXT_texture_filter_anisotropic') === true) { + const extension = extensions.get('EXT_texture_filter_anisotropic'); + maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT); + } else { + maxAnisotropy = 0; + } + + return maxAnisotropy; + } + + function getMaxPrecision(precision) { + if (precision === 'highp') { + if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) { + return 'highp'; + } + + precision = 'mediump'; + } + + if (precision === 'mediump') { + if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) { + return 'mediump'; + } + } + + return 'lowp'; + } + /* eslint-disable no-undef */ + + + const isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext; + /* eslint-enable no-undef */ + + let precision = parameters.precision !== undefined ? parameters.precision : 'highp'; + const maxPrecision = getMaxPrecision(precision); + + if (maxPrecision !== precision) { + console.warn('THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.'); + precision = maxPrecision; + } + + const drawBuffers = isWebGL2 || extensions.has('WEBGL_draw_buffers'); + const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); + const maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS); + const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE); + const maxCubemapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE); + const maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + const maxVertexUniforms = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS); + const maxVaryings = gl.getParameter(gl.MAX_VARYING_VECTORS); + const maxFragmentUniforms = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS); + const vertexTextures = maxVertexTextures > 0; + const floatFragmentTextures = isWebGL2 || extensions.has('OES_texture_float'); + const floatVertexTextures = vertexTextures && floatFragmentTextures; + const maxSamples = isWebGL2 ? gl.getParameter(gl.MAX_SAMPLES) : 0; + return { + isWebGL2: isWebGL2, + drawBuffers: drawBuffers, + getMaxAnisotropy: getMaxAnisotropy, + getMaxPrecision: getMaxPrecision, + precision: precision, + logarithmicDepthBuffer: logarithmicDepthBuffer, + maxTextures: maxTextures, + maxVertexTextures: maxVertexTextures, + maxTextureSize: maxTextureSize, + maxCubemapSize: maxCubemapSize, + maxAttributes: maxAttributes, + maxVertexUniforms: maxVertexUniforms, + maxVaryings: maxVaryings, + maxFragmentUniforms: maxFragmentUniforms, + vertexTextures: vertexTextures, + floatFragmentTextures: floatFragmentTextures, + floatVertexTextures: floatVertexTextures, + maxSamples: maxSamples + }; + } + + function WebGLClipping(properties) { + const scope = this; + let globalState = null, + numGlobalPlanes = 0, + localClippingEnabled = false, + renderingShadows = false; + const plane = new Plane(), + viewNormalMatrix = new Matrix3(), + uniform = { + value: null, + needsUpdate: false + }; + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + + this.init = function (planes, enableLocalClipping, camera) { + const enabled = planes.length !== 0 || enableLocalClipping || // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || localClippingEnabled; + localClippingEnabled = enableLocalClipping; + globalState = projectPlanes(planes, camera, 0); + numGlobalPlanes = planes.length; + return enabled; + }; + + this.beginShadows = function () { + renderingShadows = true; + projectPlanes(null); + }; + + this.endShadows = function () { + renderingShadows = false; + resetGlobalState(); + }; + + this.setState = function (material, camera, useCache) { + const planes = material.clippingPlanes, + clipIntersection = material.clipIntersection, + clipShadows = material.clipShadows; + const materialProperties = properties.get(material); + + if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) { + // there's no local clipping + if (renderingShadows) { + // there's no global clipping + projectPlanes(null); + } else { + resetGlobalState(); + } + } else { + const nGlobal = renderingShadows ? 0 : numGlobalPlanes, + lGlobal = nGlobal * 4; + let dstArray = materialProperties.clippingState || null; + uniform.value = dstArray; // ensure unique state + + dstArray = projectPlanes(planes, camera, lGlobal, useCache); + + for (let i = 0; i !== lGlobal; ++i) { + dstArray[i] = globalState[i]; + } + + materialProperties.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + } + }; + + function resetGlobalState() { + if (uniform.value !== globalState) { + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + } + + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + } + + function projectPlanes(planes, camera, dstOffset, skipTransform) { + const nPlanes = planes !== null ? planes.length : 0; + let dstArray = null; + + if (nPlanes !== 0) { + dstArray = uniform.value; + + if (skipTransform !== true || dstArray === null) { + const flatSize = dstOffset + nPlanes * 4, + viewMatrix = camera.matrixWorldInverse; + viewNormalMatrix.getNormalMatrix(viewMatrix); + + if (dstArray === null || dstArray.length < flatSize) { + dstArray = new Float32Array(flatSize); + } + + for (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) { + plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix); + plane.normal.toArray(dstArray, i4); + dstArray[i4 + 3] = plane.constant; + } + } + + uniform.value = dstArray; + uniform.needsUpdate = true; + } + + scope.numPlanes = nPlanes; + scope.numIntersection = 0; + return dstArray; + } + } + + function WebGLCubeMaps(renderer) { + let cubemaps = new WeakMap(); + + function mapTextureMapping(texture, mapping) { + if (mapping === EquirectangularReflectionMapping) { + texture.mapping = CubeReflectionMapping; + } else if (mapping === EquirectangularRefractionMapping) { + texture.mapping = CubeRefractionMapping; + } + + return texture; + } + + function get(texture) { + if (texture && texture.isTexture && texture.isRenderTargetTexture === false) { + const mapping = texture.mapping; + + if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) { + if (cubemaps.has(texture)) { + const cubemap = cubemaps.get(texture).texture; + return mapTextureMapping(cubemap, texture.mapping); + } else { + const image = texture.image; + + if (image && image.height > 0) { + const currentRenderTarget = renderer.getRenderTarget(); + const renderTarget = new WebGLCubeRenderTarget(image.height / 2); + renderTarget.fromEquirectangularTexture(renderer, texture); + cubemaps.set(texture, renderTarget); + renderer.setRenderTarget(currentRenderTarget); + texture.addEventListener('dispose', onTextureDispose); + return mapTextureMapping(renderTarget.texture, texture.mapping); + } else { + // image not yet ready. try the conversion next frame + return null; + } + } + } + } + + return texture; + } + + function onTextureDispose(event) { + const texture = event.target; + texture.removeEventListener('dispose', onTextureDispose); + const cubemap = cubemaps.get(texture); + + if (cubemap !== undefined) { + cubemaps.delete(texture); + cubemap.dispose(); + } + } + + function dispose() { + cubemaps = new WeakMap(); + } + + return { + get: get, + dispose: dispose + }; + } + + class OrthographicCamera extends Camera { + constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2000) { + super(); + this.type = 'OrthographicCamera'; + this.zoom = 1; + this.view = null; + this.left = left; + this.right = right; + this.top = top; + this.bottom = bottom; + this.near = near; + this.far = far; + this.updateProjectionMatrix(); + } + + copy(source, recursive) { + super.copy(source, recursive); + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign({}, source.view); + return this; + } + + setViewOffset(fullWidth, fullHeight, x, y, width, height) { + if (this.view === null) { + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + this.updateProjectionMatrix(); + } + + clearViewOffset() { + if (this.view !== null) { + this.view.enabled = false; + } + + this.updateProjectionMatrix(); + } + + updateProjectionMatrix() { + const dx = (this.right - this.left) / (2 * this.zoom); + const dy = (this.top - this.bottom) / (2 * this.zoom); + const cx = (this.right + this.left) / 2; + const cy = (this.top + this.bottom) / 2; + let left = cx - dx; + let right = cx + dx; + let top = cy + dy; + let bottom = cy - dy; + + if (this.view !== null && this.view.enabled) { + const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom; + const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom; + left += scaleW * this.view.offsetX; + right = left + scaleW * this.view.width; + top -= scaleH * this.view.offsetY; + bottom = top - scaleH * this.view.height; + } + + this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far); + this.projectionMatrixInverse.copy(this.projectionMatrix).invert(); + } + + toJSON(meta) { + const data = super.toJSON(meta); + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + if (this.view !== null) data.object.view = Object.assign({}, this.view); + return data; + } + + } + + OrthographicCamera.prototype.isOrthographicCamera = true; + + class RawShaderMaterial extends ShaderMaterial { + constructor(parameters) { + super(parameters); + this.type = 'RawShaderMaterial'; + } + + } + + RawShaderMaterial.prototype.isRawShaderMaterial = true; + + const LOD_MIN = 4; + const LOD_MAX = 8; + const SIZE_MAX = Math.pow(2, LOD_MAX); // The standard deviations (radians) associated with the extra mips. These are + // chosen to approximate a Trowbridge-Reitz distribution function times the + // geometric shadowing function. These sigma values squared must match the + // variance #defines in cube_uv_reflection_fragment.glsl.js. + + const EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582]; + const TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length; // The maximum length of the blur for loop. Smaller sigmas will use fewer + // samples and exit early, but not recompile the shader. + + const MAX_SAMPLES = 20; + const ENCODINGS = { + [LinearEncoding]: 0, + [sRGBEncoding]: 1, + [RGBEEncoding]: 2, + [RGBM7Encoding]: 3, + [RGBM16Encoding]: 4, + [RGBDEncoding]: 5, + [GammaEncoding]: 6 + }; + + const _flatCamera = /*@__PURE__*/new OrthographicCamera(); + + const { + _lodPlanes, + _sizeLods, + _sigmas + } = /*@__PURE__*/_createPlanes(); + + const _clearColor = /*@__PURE__*/new Color(); + + let _oldTarget = null; // Golden Ratio + + const PHI = (1 + Math.sqrt(5)) / 2; + const INV_PHI = 1 / PHI; // Vertices of a dodecahedron (except the opposites, which represent the + // same axis), used as axis directions evenly spread on a sphere. + + const _axisDirections = [/*@__PURE__*/new Vector3(1, 1, 1), /*@__PURE__*/new Vector3(-1, 1, 1), /*@__PURE__*/new Vector3(1, 1, -1), /*@__PURE__*/new Vector3(-1, 1, -1), /*@__PURE__*/new Vector3(0, PHI, INV_PHI), /*@__PURE__*/new Vector3(0, PHI, -INV_PHI), /*@__PURE__*/new Vector3(INV_PHI, 0, PHI), /*@__PURE__*/new Vector3(-INV_PHI, 0, PHI), /*@__PURE__*/new Vector3(PHI, INV_PHI, 0), /*@__PURE__*/new Vector3(-PHI, INV_PHI, 0)]; + /** + * This class generates a Prefiltered, Mipmapped Radiance Environment Map + * (PMREM) from a cubeMap environment texture. This allows different levels of + * blur to be quickly accessed based on material roughness. It is packed into a + * special CubeUV format that allows us to perform custom interpolation so that + * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap + * chain, it only goes down to the LOD_MIN level (above), and then creates extra + * even more filtered 'mips' at the same LOD_MIN resolution, associated with + * higher roughness levels. In this way we maintain resolution to smoothly + * interpolate diffuse lighting while limiting sampling computation. + * + * Paper: Fast, Accurate Image-Based Lighting + * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view + */ + + class PMREMGenerator { + constructor(renderer) { + this._renderer = renderer; + this._pingPongRenderTarget = null; + this._blurMaterial = _getBlurShader(MAX_SAMPLES); + this._equirectShader = null; + this._cubemapShader = null; + + this._compileMaterial(this._blurMaterial); + } + /** + * Generates a PMREM from a supplied Scene, which can be faster than using an + * image if networking bandwidth is low. Optional sigma specifies a blur radius + * in radians to be applied to the scene before PMREM generation. Optional near + * and far planes ensure the scene is rendered in its entirety (the cubeCamera + * is placed at the origin). + */ + + + fromScene(scene, sigma = 0, near = 0.1, far = 100) { + _oldTarget = this._renderer.getRenderTarget(); + + const cubeUVRenderTarget = this._allocateTargets(); + + this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget); + + if (sigma > 0) { + this._blur(cubeUVRenderTarget, 0, 0, sigma); + } + + this._applyPMREM(cubeUVRenderTarget); + + this._cleanup(cubeUVRenderTarget); + + return cubeUVRenderTarget; + } + /** + * Generates a PMREM from an equirectangular texture, which can be either LDR + * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512), + * as this matches best with the 256 x 256 cubemap output. + */ + + + fromEquirectangular(equirectangular) { + return this._fromTexture(equirectangular); + } + /** + * Generates a PMREM from an cubemap texture, which can be either LDR + * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256, + * as this matches best with the 256 x 256 cubemap output. + */ + + + fromCubemap(cubemap) { + return this._fromTexture(cubemap); + } + /** + * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + + + compileCubemapShader() { + if (this._cubemapShader === null) { + this._cubemapShader = _getCubemapShader(); + + this._compileMaterial(this._cubemapShader); + } + } + /** + * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during + * your texture's network fetch for increased concurrency. + */ + + + compileEquirectangularShader() { + if (this._equirectShader === null) { + this._equirectShader = _getEquirectShader(); + + this._compileMaterial(this._equirectShader); + } + } + /** + * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class, + * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on + * one of them will cause any others to also become unusable. + */ + + + dispose() { + this._blurMaterial.dispose(); + + if (this._cubemapShader !== null) this._cubemapShader.dispose(); + if (this._equirectShader !== null) this._equirectShader.dispose(); + + for (let i = 0; i < _lodPlanes.length; i++) { + _lodPlanes[i].dispose(); + } + } // private interface + + + _cleanup(outputTarget) { + this._pingPongRenderTarget.dispose(); + + this._renderer.setRenderTarget(_oldTarget); + + outputTarget.scissorTest = false; + + _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height); + } + + _fromTexture(texture) { + _oldTarget = this._renderer.getRenderTarget(); + + const cubeUVRenderTarget = this._allocateTargets(texture); + + this._textureToCubeUV(texture, cubeUVRenderTarget); + + this._applyPMREM(cubeUVRenderTarget); + + this._cleanup(cubeUVRenderTarget); + + return cubeUVRenderTarget; + } + + _allocateTargets(texture) { + // warning: null texture is valid + const params = { + magFilter: NearestFilter, + minFilter: NearestFilter, + generateMipmaps: false, + type: UnsignedByteType, + format: RGBEFormat, + encoding: _isLDR(texture) ? texture.encoding : RGBEEncoding, + depthBuffer: false + }; + + const cubeUVRenderTarget = _createRenderTarget(params); + + cubeUVRenderTarget.depthBuffer = texture ? false : true; + this._pingPongRenderTarget = _createRenderTarget(params); + return cubeUVRenderTarget; + } + + _compileMaterial(material) { + const tmpMesh = new Mesh(_lodPlanes[0], material); + + this._renderer.compile(tmpMesh, _flatCamera); + } + + _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) { + const fov = 90; + const aspect = 1; + const cubeCamera = new PerspectiveCamera(fov, aspect, near, far); + const upSign = [1, -1, 1, 1, 1, 1]; + const forwardSign = [1, 1, 1, -1, -1, -1]; + const renderer = this._renderer; + const originalAutoClear = renderer.autoClear; + const outputEncoding = renderer.outputEncoding; + const toneMapping = renderer.toneMapping; + renderer.getClearColor(_clearColor); + renderer.toneMapping = NoToneMapping; + renderer.outputEncoding = LinearEncoding; + renderer.autoClear = false; + const backgroundMaterial = new MeshBasicMaterial({ + name: 'PMREM.Background', + side: BackSide, + depthWrite: false, + depthTest: false + }); + const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial); + let useSolidColor = false; + const background = scene.background; + + if (background) { + if (background.isColor) { + backgroundMaterial.color.copy(background); + scene.background = null; + useSolidColor = true; + } + } else { + backgroundMaterial.color.copy(_clearColor); + useSolidColor = true; + } + + for (let i = 0; i < 6; i++) { + const col = i % 3; + + if (col == 0) { + cubeCamera.up.set(0, upSign[i], 0); + cubeCamera.lookAt(forwardSign[i], 0, 0); + } else if (col == 1) { + cubeCamera.up.set(0, 0, upSign[i]); + cubeCamera.lookAt(0, forwardSign[i], 0); + } else { + cubeCamera.up.set(0, upSign[i], 0); + cubeCamera.lookAt(0, 0, forwardSign[i]); + } + + _setViewport(cubeUVRenderTarget, col * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX); + + renderer.setRenderTarget(cubeUVRenderTarget); + + if (useSolidColor) { + renderer.render(backgroundBox, cubeCamera); + } + + renderer.render(scene, cubeCamera); + } + + backgroundBox.geometry.dispose(); + backgroundBox.material.dispose(); + renderer.toneMapping = toneMapping; + renderer.outputEncoding = outputEncoding; + renderer.autoClear = originalAutoClear; + scene.background = background; + } + + _textureToCubeUV(texture, cubeUVRenderTarget) { + const renderer = this._renderer; + + if (texture.isCubeTexture) { + if (this._cubemapShader == null) { + this._cubemapShader = _getCubemapShader(); + } + } else { + if (this._equirectShader == null) { + this._equirectShader = _getEquirectShader(); + } + } + + const material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader; + const mesh = new Mesh(_lodPlanes[0], material); + const uniforms = material.uniforms; + uniforms['envMap'].value = texture; + + if (!texture.isCubeTexture) { + uniforms['texelSize'].value.set(1.0 / texture.image.width, 1.0 / texture.image.height); + } + + uniforms['inputEncoding'].value = ENCODINGS[texture.encoding]; + uniforms['outputEncoding'].value = ENCODINGS[cubeUVRenderTarget.texture.encoding]; + + _setViewport(cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX); + + renderer.setRenderTarget(cubeUVRenderTarget); + renderer.render(mesh, _flatCamera); + } + + _applyPMREM(cubeUVRenderTarget) { + const renderer = this._renderer; + const autoClear = renderer.autoClear; + renderer.autoClear = false; + + for (let i = 1; i < TOTAL_LODS; i++) { + const sigma = Math.sqrt(_sigmas[i] * _sigmas[i] - _sigmas[i - 1] * _sigmas[i - 1]); + const poleAxis = _axisDirections[(i - 1) % _axisDirections.length]; + + this._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis); + } + + renderer.autoClear = autoClear; + } + /** + * This is a two-pass Gaussian blur for a cubemap. Normally this is done + * vertically and horizontally, but this breaks down on a cube. Here we apply + * the blur latitudinally (around the poles), and then longitudinally (towards + * the poles) to approximate the orthogonally-separable blur. It is least + * accurate at the poles, but still does a decent job. + */ + + + _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) { + const pingPongRenderTarget = this._pingPongRenderTarget; + + this._halfBlur(cubeUVRenderTarget, pingPongRenderTarget, lodIn, lodOut, sigma, 'latitudinal', poleAxis); + + this._halfBlur(pingPongRenderTarget, cubeUVRenderTarget, lodOut, lodOut, sigma, 'longitudinal', poleAxis); + } + + _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) { + const renderer = this._renderer; + const blurMaterial = this._blurMaterial; + + if (direction !== 'latitudinal' && direction !== 'longitudinal') { + console.error('blur direction must be either latitudinal or longitudinal!'); + } // Number of standard deviations at which to cut off the discrete approximation. + + + const STANDARD_DEVIATIONS = 3; + const blurMesh = new Mesh(_lodPlanes[lodOut], blurMaterial); + const blurUniforms = blurMaterial.uniforms; + const pixels = _sizeLods[lodIn] - 1; + const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1); + const sigmaPixels = sigmaRadians / radiansPerPixel; + const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES; + + if (samples > MAX_SAMPLES) { + console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`); + } + + const weights = []; + let sum = 0; + + for (let i = 0; i < MAX_SAMPLES; ++i) { + const x = i / sigmaPixels; + const weight = Math.exp(-x * x / 2); + weights.push(weight); + + if (i == 0) { + sum += weight; + } else if (i < samples) { + sum += 2 * weight; + } + } + + for (let i = 0; i < weights.length; i++) { + weights[i] = weights[i] / sum; + } + + blurUniforms['envMap'].value = targetIn.texture; + blurUniforms['samples'].value = samples; + blurUniforms['weights'].value = weights; + blurUniforms['latitudinal'].value = direction === 'latitudinal'; + + if (poleAxis) { + blurUniforms['poleAxis'].value = poleAxis; + } + + blurUniforms['dTheta'].value = radiansPerPixel; + blurUniforms['mipInt'].value = LOD_MAX - lodIn; + blurUniforms['inputEncoding'].value = ENCODINGS[targetIn.texture.encoding]; + blurUniforms['outputEncoding'].value = ENCODINGS[targetIn.texture.encoding]; + const outputSize = _sizeLods[lodOut]; + const x = 3 * Math.max(0, SIZE_MAX - 2 * outputSize); + const y = (lodOut === 0 ? 0 : 2 * SIZE_MAX) + 2 * outputSize * (lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0); + + _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize); + + renderer.setRenderTarget(targetOut); + renderer.render(blurMesh, _flatCamera); + } + + } + + function _isLDR(texture) { + if (texture === undefined || texture.type !== UnsignedByteType) return false; + return texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding; + } + + function _createPlanes() { + const _lodPlanes = []; + const _sizeLods = []; + const _sigmas = []; + let lod = LOD_MAX; + + for (let i = 0; i < TOTAL_LODS; i++) { + const sizeLod = Math.pow(2, lod); + + _sizeLods.push(sizeLod); + + let sigma = 1.0 / sizeLod; + + if (i > LOD_MAX - LOD_MIN) { + sigma = EXTRA_LOD_SIGMA[i - LOD_MAX + LOD_MIN - 1]; + } else if (i == 0) { + sigma = 0; + } + + _sigmas.push(sigma); + + const texelSize = 1.0 / (sizeLod - 1); + const min = -texelSize / 2; + const max = 1 + texelSize / 2; + const uv1 = [min, min, max, min, max, max, min, min, max, max, min, max]; + const cubeFaces = 6; + const vertices = 6; + const positionSize = 3; + const uvSize = 2; + const faceIndexSize = 1; + const position = new Float32Array(positionSize * vertices * cubeFaces); + const uv = new Float32Array(uvSize * vertices * cubeFaces); + const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces); + + for (let face = 0; face < cubeFaces; face++) { + const x = face % 3 * 2 / 3 - 1; + const y = face > 2 ? 0 : -1; + const coordinates = [x, y, 0, x + 2 / 3, y, 0, x + 2 / 3, y + 1, 0, x, y, 0, x + 2 / 3, y + 1, 0, x, y + 1, 0]; + position.set(coordinates, positionSize * vertices * face); + uv.set(uv1, uvSize * vertices * face); + const fill = [face, face, face, face, face, face]; + faceIndex.set(fill, faceIndexSize * vertices * face); + } + + const planes = new BufferGeometry(); + planes.setAttribute('position', new BufferAttribute(position, positionSize)); + planes.setAttribute('uv', new BufferAttribute(uv, uvSize)); + planes.setAttribute('faceIndex', new BufferAttribute(faceIndex, faceIndexSize)); + + _lodPlanes.push(planes); + + if (lod > LOD_MIN) { + lod--; + } + } + + return { + _lodPlanes, + _sizeLods, + _sigmas + }; + } + + function _createRenderTarget(params) { + const cubeUVRenderTarget = new WebGLRenderTarget(3 * SIZE_MAX, 3 * SIZE_MAX, params); + cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping; + cubeUVRenderTarget.texture.name = 'PMREM.cubeUv'; + cubeUVRenderTarget.scissorTest = true; + return cubeUVRenderTarget; + } + + function _setViewport(target, x, y, width, height) { + target.viewport.set(x, y, width, height); + target.scissor.set(x, y, width, height); + } + + function _getBlurShader(maxSamples) { + const weights = new Float32Array(maxSamples); + const poleAxis = new Vector3(0, 1, 0); + const shaderMaterial = new RawShaderMaterial({ + name: 'SphericalGaussianBlur', + defines: { + 'n': maxSamples + }, + uniforms: { + 'envMap': { + value: null + }, + 'samples': { + value: 1 + }, + 'weights': { + value: weights + }, + 'latitudinal': { + value: false + }, + 'dTheta': { + value: 0 + }, + 'mipInt': { + value: 0 + }, + 'poleAxis': { + value: poleAxis + }, + 'inputEncoding': { + value: ENCODINGS[LinearEncoding] + }, + 'outputEncoding': { + value: ENCODINGS[LinearEncoding] + } + }, + vertexShader: _getCommonVertexShader(), + fragmentShader: + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + ${_getEncodings()} + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + gl_FragColor = linearToOutputTexel( gl_FragColor ); + + } + `, + blending: NoBlending, + depthTest: false, + depthWrite: false + }); + return shaderMaterial; + } + + function _getEquirectShader() { + const texelSize = new Vector2(1, 1); + const shaderMaterial = new RawShaderMaterial({ + name: 'EquirectangularToCubeUV', + uniforms: { + 'envMap': { + value: null + }, + 'texelSize': { + value: texelSize + }, + 'inputEncoding': { + value: ENCODINGS[LinearEncoding] + }, + 'outputEncoding': { + value: ENCODINGS[LinearEncoding] + } + }, + vertexShader: _getCommonVertexShader(), + fragmentShader: + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform vec2 texelSize; + + ${_getEncodings()} + + #include + + void main() { + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + vec2 f = fract( uv / texelSize - 0.5 ); + uv -= f * texelSize; + vec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb; + uv.x += texelSize.x; + vec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb; + uv.y += texelSize.y; + vec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb; + uv.x -= texelSize.x; + vec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb; + + vec3 tm = mix( tl, tr, f.x ); + vec3 bm = mix( bl, br, f.x ); + gl_FragColor.rgb = mix( tm, bm, f.y ); + + gl_FragColor = linearToOutputTexel( gl_FragColor ); + + } + `, + blending: NoBlending, + depthTest: false, + depthWrite: false + }); + return shaderMaterial; + } + + function _getCubemapShader() { + const shaderMaterial = new RawShaderMaterial({ + name: 'CubemapToCubeUV', + uniforms: { + 'envMap': { + value: null + }, + 'inputEncoding': { + value: ENCODINGS[LinearEncoding] + }, + 'outputEncoding': { + value: ENCODINGS[LinearEncoding] + } + }, + vertexShader: _getCommonVertexShader(), + fragmentShader: + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + ${_getEncodings()} + + void main() { + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb; + gl_FragColor = linearToOutputTexel( gl_FragColor ); + + } + `, + blending: NoBlending, + depthTest: false, + depthWrite: false + }); + return shaderMaterial; + } + + function _getCommonVertexShader() { + return ( + /* glsl */ + ` + + precision mediump float; + precision mediump int; + + attribute vec3 position; + attribute vec2 uv; + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + ` + ); + } + + function _getEncodings() { + return ( + /* glsl */ + ` + + uniform int inputEncoding; + uniform int outputEncoding; + + #include + + vec4 inputTexelToLinear( vec4 value ) { + + if ( inputEncoding == 0 ) { + + return value; + + } else if ( inputEncoding == 1 ) { + + return sRGBToLinear( value ); + + } else if ( inputEncoding == 2 ) { + + return RGBEToLinear( value ); + + } else if ( inputEncoding == 3 ) { + + return RGBMToLinear( value, 7.0 ); + + } else if ( inputEncoding == 4 ) { + + return RGBMToLinear( value, 16.0 ); + + } else if ( inputEncoding == 5 ) { + + return RGBDToLinear( value, 256.0 ); + + } else { + + return GammaToLinear( value, 2.2 ); + + } + + } + + vec4 linearToOutputTexel( vec4 value ) { + + if ( outputEncoding == 0 ) { + + return value; + + } else if ( outputEncoding == 1 ) { + + return LinearTosRGB( value ); + + } else if ( outputEncoding == 2 ) { + + return LinearToRGBE( value ); + + } else if ( outputEncoding == 3 ) { + + return LinearToRGBM( value, 7.0 ); + + } else if ( outputEncoding == 4 ) { + + return LinearToRGBM( value, 16.0 ); + + } else if ( outputEncoding == 5 ) { + + return LinearToRGBD( value, 256.0 ); + + } else { + + return LinearToGamma( value, 2.2 ); + + } + + } + + vec4 envMapTexelToLinear( vec4 color ) { + + return inputTexelToLinear( color ); + + } + ` + ); + } + + function WebGLCubeUVMaps(renderer) { + let cubeUVmaps = new WeakMap(); + let pmremGenerator = null; + + function get(texture) { + if (texture && texture.isTexture && texture.isRenderTargetTexture === false) { + const mapping = texture.mapping; + const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping; + const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping; + + if (isEquirectMap || isCubeMap) { + // equirect/cube map to cubeUV conversion + if (cubeUVmaps.has(texture)) { + return cubeUVmaps.get(texture).texture; + } else { + const image = texture.image; + + if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) { + const currentRenderTarget = renderer.getRenderTarget(); + if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer); + const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture); + cubeUVmaps.set(texture, renderTarget); + renderer.setRenderTarget(currentRenderTarget); + texture.addEventListener('dispose', onTextureDispose); + return renderTarget.texture; + } else { + // image not yet ready. try the conversion next frame + return null; + } + } + } + } + + return texture; + } + + function isCubeTextureComplete(image) { + let count = 0; + const length = 6; + + for (let i = 0; i < length; i++) { + if (image[i] !== undefined) count++; + } + + return count === length; + } + + function onTextureDispose(event) { + const texture = event.target; + texture.removeEventListener('dispose', onTextureDispose); + const cubemapUV = cubeUVmaps.get(texture); + + if (cubemapUV !== undefined) { + cubeUVmaps.delete(texture); + cubemapUV.dispose(); + } + } + + function dispose() { + cubeUVmaps = new WeakMap(); + + if (pmremGenerator !== null) { + pmremGenerator.dispose(); + pmremGenerator = null; + } + } + + return { + get: get, + dispose: dispose + }; + } + + function WebGLExtensions(gl) { + const extensions = {}; + + function getExtension(name) { + if (extensions[name] !== undefined) { + return extensions[name]; + } + + let extension; + + switch (name) { + case 'WEBGL_depth_texture': + extension = gl.getExtension('WEBGL_depth_texture') || gl.getExtension('MOZ_WEBGL_depth_texture') || gl.getExtension('WEBKIT_WEBGL_depth_texture'); + break; + + case 'EXT_texture_filter_anisotropic': + extension = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic'); + break; + + case 'WEBGL_compressed_texture_s3tc': + extension = gl.getExtension('WEBGL_compressed_texture_s3tc') || gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); + break; + + case 'WEBGL_compressed_texture_pvrtc': + extension = gl.getExtension('WEBGL_compressed_texture_pvrtc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'); + break; + + default: + extension = gl.getExtension(name); + } + + extensions[name] = extension; + return extension; + } + + return { + has: function (name) { + return getExtension(name) !== null; + }, + init: function (capabilities) { + if (capabilities.isWebGL2) { + getExtension('EXT_color_buffer_float'); + } else { + getExtension('WEBGL_depth_texture'); + getExtension('OES_texture_float'); + getExtension('OES_texture_half_float'); + getExtension('OES_texture_half_float_linear'); + getExtension('OES_standard_derivatives'); + getExtension('OES_element_index_uint'); + getExtension('OES_vertex_array_object'); + getExtension('ANGLE_instanced_arrays'); + } + + getExtension('OES_texture_float_linear'); + getExtension('EXT_color_buffer_half_float'); + }, + get: function (name) { + const extension = getExtension(name); + + if (extension === null) { + console.warn('THREE.WebGLRenderer: ' + name + ' extension not supported.'); + } + + return extension; + } + }; + } + + function WebGLGeometries(gl, attributes, info, bindingStates) { + const geometries = {}; + const wireframeAttributes = new WeakMap(); + + function onGeometryDispose(event) { + const geometry = event.target; + + if (geometry.index !== null) { + attributes.remove(geometry.index); + } + + for (const name in geometry.attributes) { + attributes.remove(geometry.attributes[name]); + } + + geometry.removeEventListener('dispose', onGeometryDispose); + delete geometries[geometry.id]; + const attribute = wireframeAttributes.get(geometry); + + if (attribute) { + attributes.remove(attribute); + wireframeAttributes.delete(geometry); + } + + bindingStates.releaseStatesOfGeometry(geometry); + + if (geometry.isInstancedBufferGeometry === true) { + delete geometry._maxInstanceCount; + } // + + + info.memory.geometries--; + } + + function get(object, geometry) { + if (geometries[geometry.id] === true) return geometry; + geometry.addEventListener('dispose', onGeometryDispose); + geometries[geometry.id] = true; + info.memory.geometries++; + return geometry; + } + + function update(geometry) { + const geometryAttributes = geometry.attributes; // Updating index buffer in VAO now. See WebGLBindingStates. + + for (const name in geometryAttributes) { + attributes.update(geometryAttributes[name], gl.ARRAY_BUFFER); + } // morph targets + + + const morphAttributes = geometry.morphAttributes; + + for (const name in morphAttributes) { + const array = morphAttributes[name]; + + for (let i = 0, l = array.length; i < l; i++) { + attributes.update(array[i], gl.ARRAY_BUFFER); + } + } + } + + function updateWireframeAttribute(geometry) { + const indices = []; + const geometryIndex = geometry.index; + const geometryPosition = geometry.attributes.position; + let version = 0; + + if (geometryIndex !== null) { + const array = geometryIndex.array; + version = geometryIndex.version; + + for (let i = 0, l = array.length; i < l; i += 3) { + const a = array[i + 0]; + const b = array[i + 1]; + const c = array[i + 2]; + indices.push(a, b, b, c, c, a); + } + } else { + const array = geometryPosition.array; + version = geometryPosition.version; + + for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) { + const a = i + 0; + const b = i + 1; + const c = i + 2; + indices.push(a, b, b, c, c, a); + } + } + + const attribute = new (arrayMax(indices) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1); + attribute.version = version; // Updating index buffer in VAO now. See WebGLBindingStates + // + + const previousAttribute = wireframeAttributes.get(geometry); + if (previousAttribute) attributes.remove(previousAttribute); // + + wireframeAttributes.set(geometry, attribute); + } + + function getWireframeAttribute(geometry) { + const currentAttribute = wireframeAttributes.get(geometry); + + if (currentAttribute) { + const geometryIndex = geometry.index; + + if (geometryIndex !== null) { + // if the attribute is obsolete, create a new one + if (currentAttribute.version < geometryIndex.version) { + updateWireframeAttribute(geometry); + } + } + } else { + updateWireframeAttribute(geometry); + } + + return wireframeAttributes.get(geometry); + } + + return { + get: get, + update: update, + getWireframeAttribute: getWireframeAttribute + }; + } + + function WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) { + const isWebGL2 = capabilities.isWebGL2; + let mode; + + function setMode(value) { + mode = value; + } + + let type, bytesPerElement; + + function setIndex(value) { + type = value.type; + bytesPerElement = value.bytesPerElement; + } + + function render(start, count) { + gl.drawElements(mode, count, type, start * bytesPerElement); + info.update(count, mode, 1); + } + + function renderInstances(start, count, primcount) { + if (primcount === 0) return; + let extension, methodName; + + if (isWebGL2) { + extension = gl; + methodName = 'drawElementsInstanced'; + } else { + extension = extensions.get('ANGLE_instanced_arrays'); + methodName = 'drawElementsInstancedANGLE'; + + if (extension === null) { + console.error('THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.'); + return; + } + } + + extension[methodName](mode, count, type, start * bytesPerElement, primcount); + info.update(count, mode, primcount); + } // + + + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + } + + function WebGLInfo(gl) { + const memory = { + geometries: 0, + textures: 0 + }; + const render = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + + function update(count, mode, instanceCount) { + render.calls++; + + switch (mode) { + case gl.TRIANGLES: + render.triangles += instanceCount * (count / 3); + break; + + case gl.LINES: + render.lines += instanceCount * (count / 2); + break; + + case gl.LINE_STRIP: + render.lines += instanceCount * (count - 1); + break; + + case gl.LINE_LOOP: + render.lines += instanceCount * count; + break; + + case gl.POINTS: + render.points += instanceCount * count; + break; + + default: + console.error('THREE.WebGLInfo: Unknown draw mode:', mode); + break; + } + } + + function reset() { + render.frame++; + render.calls = 0; + render.triangles = 0; + render.points = 0; + render.lines = 0; + } + + return { + memory: memory, + render: render, + programs: null, + autoReset: true, + reset: reset, + update: update + }; + } + + function numericalSort(a, b) { + return a[0] - b[0]; + } + + function absNumericalSort(a, b) { + return Math.abs(b[1]) - Math.abs(a[1]); + } + + function WebGLMorphtargets(gl) { + const influencesList = {}; + const morphInfluences = new Float32Array(8); + const workInfluences = []; + + for (let i = 0; i < 8; i++) { + workInfluences[i] = [i, 0]; + } + + function update(object, geometry, material, program) { + const objectInfluences = object.morphTargetInfluences; // When object doesn't have morph target influences defined, we treat it as a 0-length array + // This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences + + const length = objectInfluences === undefined ? 0 : objectInfluences.length; + let influences = influencesList[geometry.id]; + + if (influences === undefined || influences.length !== length) { + // initialise list + influences = []; + + for (let i = 0; i < length; i++) { + influences[i] = [i, 0]; + } + + influencesList[geometry.id] = influences; + } // Collect influences + + + for (let i = 0; i < length; i++) { + const influence = influences[i]; + influence[0] = i; + influence[1] = objectInfluences[i]; + } + + influences.sort(absNumericalSort); + + for (let i = 0; i < 8; i++) { + if (i < length && influences[i][1]) { + workInfluences[i][0] = influences[i][0]; + workInfluences[i][1] = influences[i][1]; + } else { + workInfluences[i][0] = Number.MAX_SAFE_INTEGER; + workInfluences[i][1] = 0; + } + } + + workInfluences.sort(numericalSort); + const morphTargets = geometry.morphAttributes.position; + const morphNormals = geometry.morphAttributes.normal; + let morphInfluencesSum = 0; + + for (let i = 0; i < 8; i++) { + const influence = workInfluences[i]; + const index = influence[0]; + const value = influence[1]; + + if (index !== Number.MAX_SAFE_INTEGER && value) { + if (morphTargets && geometry.getAttribute('morphTarget' + i) !== morphTargets[index]) { + geometry.setAttribute('morphTarget' + i, morphTargets[index]); + } + + if (morphNormals && geometry.getAttribute('morphNormal' + i) !== morphNormals[index]) { + geometry.setAttribute('morphNormal' + i, morphNormals[index]); + } + + morphInfluences[i] = value; + morphInfluencesSum += value; + } else { + if (morphTargets && geometry.hasAttribute('morphTarget' + i) === true) { + geometry.deleteAttribute('morphTarget' + i); + } + + if (morphNormals && geometry.hasAttribute('morphNormal' + i) === true) { + geometry.deleteAttribute('morphNormal' + i); + } + + morphInfluences[i] = 0; + } + } // GLSL shader uses formula baseinfluence * base + sum(target * influence) + // This allows us to switch between absolute morphs and relative morphs without changing shader code + // When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence) + + + const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum; + program.getUniforms().setValue(gl, 'morphTargetBaseInfluence', morphBaseInfluence); + program.getUniforms().setValue(gl, 'morphTargetInfluences', morphInfluences); + } + + return { + update: update + }; + } + + function WebGLObjects(gl, geometries, attributes, info) { + let updateMap = new WeakMap(); + + function update(object) { + const frame = info.render.frame; + const geometry = object.geometry; + const buffergeometry = geometries.get(object, geometry); // Update once per frame + + if (updateMap.get(buffergeometry) !== frame) { + geometries.update(buffergeometry); + updateMap.set(buffergeometry, frame); + } + + if (object.isInstancedMesh) { + if (object.hasEventListener('dispose', onInstancedMeshDispose) === false) { + object.addEventListener('dispose', onInstancedMeshDispose); + } + + attributes.update(object.instanceMatrix, gl.ARRAY_BUFFER); + + if (object.instanceColor !== null) { + attributes.update(object.instanceColor, gl.ARRAY_BUFFER); + } + } + + return buffergeometry; + } + + function dispose() { + updateMap = new WeakMap(); + } + + function onInstancedMeshDispose(event) { + const instancedMesh = event.target; + instancedMesh.removeEventListener('dispose', onInstancedMeshDispose); + attributes.remove(instancedMesh.instanceMatrix); + if (instancedMesh.instanceColor !== null) attributes.remove(instancedMesh.instanceColor); + } + + return { + update: update, + dispose: dispose + }; + } + + class DataTexture2DArray extends Texture { + constructor(data = null, width = 1, height = 1, depth = 1) { + super(null); + this.image = { + data, + width, + height, + depth + }; + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + this.wrapR = ClampToEdgeWrapping; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + this.needsUpdate = true; + } + + } + + DataTexture2DArray.prototype.isDataTexture2DArray = true; + + class DataTexture3D extends Texture { + constructor(data = null, width = 1, height = 1, depth = 1) { + // We're going to add .setXXX() methods for setting properties later. + // Users can still set in DataTexture3D directly. + // + // const texture = new THREE.DataTexture3D( data, width, height, depth ); + // texture.anisotropy = 16; + // + // See #14839 + super(null); + this.image = { + data, + width, + height, + depth + }; + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + this.wrapR = ClampToEdgeWrapping; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + this.needsUpdate = true; + } + + } + + DataTexture3D.prototype.isDataTexture3D = true; + + /** + * Uniforms of a program. + * Those form a tree structure with a special top-level container for the root, + * which you get by calling 'new WebGLUniforms( gl, program )'. + * + * + * Properties of inner nodes including the top-level container: + * + * .seq - array of nested uniforms + * .map - nested uniforms by name + * + * + * Methods of all nodes except the top-level container: + * + * .setValue( gl, value, [textures] ) + * + * uploads a uniform value(s) + * the 'textures' parameter is needed for sampler uniforms + * + * + * Static methods of the top-level container (textures factorizations): + * + * .upload( gl, seq, values, textures ) + * + * sets uniforms in 'seq' to 'values[id].value' + * + * .seqWithValue( seq, values ) : filteredSeq + * + * filters 'seq' entries with corresponding entry in values + * + * + * Methods of the top-level container (textures factorizations): + * + * .setValue( gl, name, value, textures ) + * + * sets uniform with name 'name' to 'value' + * + * .setOptional( gl, obj, prop ) + * + * like .set for an optional property of the object + * + */ + const emptyTexture = new Texture(); + const emptyTexture2dArray = new DataTexture2DArray(); + const emptyTexture3d = new DataTexture3D(); + const emptyCubeTexture = new CubeTexture(); // --- Utilities --- + // Array Caches (provide typed arrays for temporary by size) + + const arrayCacheF32 = []; + const arrayCacheI32 = []; // Float32Array caches used for uploading Matrix uniforms + + const mat4array = new Float32Array(16); + const mat3array = new Float32Array(9); + const mat2array = new Float32Array(4); // Flattening for arrays of vectors and matrices + + function flatten(array, nBlocks, blockSize) { + const firstElem = array[0]; + if (firstElem <= 0 || firstElem > 0) return array; // unoptimized: ! isNaN( firstElem ) + // see http://jacksondunstan.com/articles/983 + + const n = nBlocks * blockSize; + let r = arrayCacheF32[n]; + + if (r === undefined) { + r = new Float32Array(n); + arrayCacheF32[n] = r; + } + + if (nBlocks !== 0) { + firstElem.toArray(r, 0); + + for (let i = 1, offset = 0; i !== nBlocks; ++i) { + offset += blockSize; + array[i].toArray(r, offset); + } + } + + return r; + } + + function arraysEqual(a, b) { + if (a.length !== b.length) return false; + + for (let i = 0, l = a.length; i < l; i++) { + if (a[i] !== b[i]) return false; + } + + return true; + } + + function copyArray(a, b) { + for (let i = 0, l = b.length; i < l; i++) { + a[i] = b[i]; + } + } // Texture unit allocation + + + function allocTexUnits(textures, n) { + let r = arrayCacheI32[n]; + + if (r === undefined) { + r = new Int32Array(n); + arrayCacheI32[n] = r; + } + + for (let i = 0; i !== n; ++i) { + r[i] = textures.allocateTextureUnit(); + } + + return r; + } // --- Setters --- + // Note: Defining these methods externally, because they come in a bunch + // and this way their names minify. + // Single scalar + + + function setValueV1f(gl, v) { + const cache = this.cache; + if (cache[0] === v) return; + gl.uniform1f(this.addr, v); + cache[0] = v; + } // Single float vector (from flat array or THREE.VectorN) + + + function setValueV2f(gl, v) { + const cache = this.cache; + + if (v.x !== undefined) { + if (cache[0] !== v.x || cache[1] !== v.y) { + gl.uniform2f(this.addr, v.x, v.y); + cache[0] = v.x; + cache[1] = v.y; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform2fv(this.addr, v); + copyArray(cache, v); + } + } + + function setValueV3f(gl, v) { + const cache = this.cache; + + if (v.x !== undefined) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) { + gl.uniform3f(this.addr, v.x, v.y, v.z); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + } + } else if (v.r !== undefined) { + if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) { + gl.uniform3f(this.addr, v.r, v.g, v.b); + cache[0] = v.r; + cache[1] = v.g; + cache[2] = v.b; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform3fv(this.addr, v); + copyArray(cache, v); + } + } + + function setValueV4f(gl, v) { + const cache = this.cache; + + if (v.x !== undefined) { + if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) { + gl.uniform4f(this.addr, v.x, v.y, v.z, v.w); + cache[0] = v.x; + cache[1] = v.y; + cache[2] = v.z; + cache[3] = v.w; + } + } else { + if (arraysEqual(cache, v)) return; + gl.uniform4fv(this.addr, v); + copyArray(cache, v); + } + } // Single matrix (from flat array or THREE.MatrixN) + + + function setValueM2(gl, v) { + const cache = this.cache; + const elements = v.elements; + + if (elements === undefined) { + if (arraysEqual(cache, v)) return; + gl.uniformMatrix2fv(this.addr, false, v); + copyArray(cache, v); + } else { + if (arraysEqual(cache, elements)) return; + mat2array.set(elements); + gl.uniformMatrix2fv(this.addr, false, mat2array); + copyArray(cache, elements); + } + } + + function setValueM3(gl, v) { + const cache = this.cache; + const elements = v.elements; + + if (elements === undefined) { + if (arraysEqual(cache, v)) return; + gl.uniformMatrix3fv(this.addr, false, v); + copyArray(cache, v); + } else { + if (arraysEqual(cache, elements)) return; + mat3array.set(elements); + gl.uniformMatrix3fv(this.addr, false, mat3array); + copyArray(cache, elements); + } + } + + function setValueM4(gl, v) { + const cache = this.cache; + const elements = v.elements; + + if (elements === undefined) { + if (arraysEqual(cache, v)) return; + gl.uniformMatrix4fv(this.addr, false, v); + copyArray(cache, v); + } else { + if (arraysEqual(cache, elements)) return; + mat4array.set(elements); + gl.uniformMatrix4fv(this.addr, false, mat4array); + copyArray(cache, elements); + } + } // Single integer / boolean + + + function setValueV1i(gl, v) { + const cache = this.cache; + if (cache[0] === v) return; + gl.uniform1i(this.addr, v); + cache[0] = v; + } // Single integer / boolean vector (from flat array) + + + function setValueV2i(gl, v) { + const cache = this.cache; + if (arraysEqual(cache, v)) return; + gl.uniform2iv(this.addr, v); + copyArray(cache, v); + } + + function setValueV3i(gl, v) { + const cache = this.cache; + if (arraysEqual(cache, v)) return; + gl.uniform3iv(this.addr, v); + copyArray(cache, v); + } + + function setValueV4i(gl, v) { + const cache = this.cache; + if (arraysEqual(cache, v)) return; + gl.uniform4iv(this.addr, v); + copyArray(cache, v); + } // Single unsigned integer + + + function setValueV1ui(gl, v) { + const cache = this.cache; + if (cache[0] === v) return; + gl.uniform1ui(this.addr, v); + cache[0] = v; + } // Single unsigned integer vector (from flat array) + + + function setValueV2ui(gl, v) { + const cache = this.cache; + if (arraysEqual(cache, v)) return; + gl.uniform2uiv(this.addr, v); + copyArray(cache, v); + } + + function setValueV3ui(gl, v) { + const cache = this.cache; + if (arraysEqual(cache, v)) return; + gl.uniform3uiv(this.addr, v); + copyArray(cache, v); + } + + function setValueV4ui(gl, v) { + const cache = this.cache; + if (arraysEqual(cache, v)) return; + gl.uniform4uiv(this.addr, v); + copyArray(cache, v); + } // Single texture (2D / Cube) + + + function setValueT1(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + + textures.safeSetTexture2D(v || emptyTexture, unit); + } + + function setValueT3D1(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + + textures.setTexture3D(v || emptyTexture3d, unit); + } + + function setValueT6(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + + textures.safeSetTextureCube(v || emptyCubeTexture, unit); + } + + function setValueT2DArray1(gl, v, textures) { + const cache = this.cache; + const unit = textures.allocateTextureUnit(); + + if (cache[0] !== unit) { + gl.uniform1i(this.addr, unit); + cache[0] = unit; + } + + textures.setTexture2DArray(v || emptyTexture2dArray, unit); + } // Helper to pick the right setter for the singular case + + + function getSingularSetter(type) { + switch (type) { + case 0x1406: + return setValueV1f; + // FLOAT + + case 0x8b50: + return setValueV2f; + // _VEC2 + + case 0x8b51: + return setValueV3f; + // _VEC3 + + case 0x8b52: + return setValueV4f; + // _VEC4 + + case 0x8b5a: + return setValueM2; + // _MAT2 + + case 0x8b5b: + return setValueM3; + // _MAT3 + + case 0x8b5c: + return setValueM4; + // _MAT4 + + case 0x1404: + case 0x8b56: + return setValueV1i; + // INT, BOOL + + case 0x8b53: + case 0x8b57: + return setValueV2i; + // _VEC2 + + case 0x8b54: + case 0x8b58: + return setValueV3i; + // _VEC3 + + case 0x8b55: + case 0x8b59: + return setValueV4i; + // _VEC4 + + case 0x1405: + return setValueV1ui; + // UINT + + case 0x8dc6: + return setValueV2ui; + // _VEC2 + + case 0x8dc7: + return setValueV3ui; + // _VEC3 + + case 0x8dc8: + return setValueV4ui; + // _VEC4 + + case 0x8b5e: // SAMPLER_2D + + case 0x8d66: // SAMPLER_EXTERNAL_OES + + case 0x8dca: // INT_SAMPLER_2D + + case 0x8dd2: // UNSIGNED_INT_SAMPLER_2D + + case 0x8b62: + // SAMPLER_2D_SHADOW + return setValueT1; + + case 0x8b5f: // SAMPLER_3D + + case 0x8dcb: // INT_SAMPLER_3D + + case 0x8dd3: + // UNSIGNED_INT_SAMPLER_3D + return setValueT3D1; + + case 0x8b60: // SAMPLER_CUBE + + case 0x8dcc: // INT_SAMPLER_CUBE + + case 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE + + case 0x8dc5: + // SAMPLER_CUBE_SHADOW + return setValueT6; + + case 0x8dc1: // SAMPLER_2D_ARRAY + + case 0x8dcf: // INT_SAMPLER_2D_ARRAY + + case 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY + + case 0x8dc4: + // SAMPLER_2D_ARRAY_SHADOW + return setValueT2DArray1; + } + } // Array of scalars + + + function setValueV1fArray(gl, v) { + gl.uniform1fv(this.addr, v); + } // Array of vectors (from flat array or array of THREE.VectorN) + + + function setValueV2fArray(gl, v) { + const data = flatten(v, this.size, 2); + gl.uniform2fv(this.addr, data); + } + + function setValueV3fArray(gl, v) { + const data = flatten(v, this.size, 3); + gl.uniform3fv(this.addr, data); + } + + function setValueV4fArray(gl, v) { + const data = flatten(v, this.size, 4); + gl.uniform4fv(this.addr, data); + } // Array of matrices (from flat array or array of THREE.MatrixN) + + + function setValueM2Array(gl, v) { + const data = flatten(v, this.size, 4); + gl.uniformMatrix2fv(this.addr, false, data); + } + + function setValueM3Array(gl, v) { + const data = flatten(v, this.size, 9); + gl.uniformMatrix3fv(this.addr, false, data); + } + + function setValueM4Array(gl, v) { + const data = flatten(v, this.size, 16); + gl.uniformMatrix4fv(this.addr, false, data); + } // Array of integer / boolean + + + function setValueV1iArray(gl, v) { + gl.uniform1iv(this.addr, v); + } // Array of integer / boolean vectors (from flat array) + + + function setValueV2iArray(gl, v) { + gl.uniform2iv(this.addr, v); + } + + function setValueV3iArray(gl, v) { + gl.uniform3iv(this.addr, v); + } + + function setValueV4iArray(gl, v) { + gl.uniform4iv(this.addr, v); + } // Array of unsigned integer + + + function setValueV1uiArray(gl, v) { + gl.uniform1uiv(this.addr, v); + } // Array of unsigned integer vectors (from flat array) + + + function setValueV2uiArray(gl, v) { + gl.uniform2uiv(this.addr, v); + } + + function setValueV3uiArray(gl, v) { + gl.uniform3uiv(this.addr, v); + } + + function setValueV4uiArray(gl, v) { + gl.uniform4uiv(this.addr, v); + } // Array of textures (2D / Cube) + + + function setValueT1Array(gl, v, textures) { + const n = v.length; + const units = allocTexUnits(textures, n); + gl.uniform1iv(this.addr, units); + + for (let i = 0; i !== n; ++i) { + textures.safeSetTexture2D(v[i] || emptyTexture, units[i]); + } + } + + function setValueT6Array(gl, v, textures) { + const n = v.length; + const units = allocTexUnits(textures, n); + gl.uniform1iv(this.addr, units); + + for (let i = 0; i !== n; ++i) { + textures.safeSetTextureCube(v[i] || emptyCubeTexture, units[i]); + } + } // Helper to pick the right setter for a pure (bottom-level) array + + + function getPureArraySetter(type) { + switch (type) { + case 0x1406: + return setValueV1fArray; + // FLOAT + + case 0x8b50: + return setValueV2fArray; + // _VEC2 + + case 0x8b51: + return setValueV3fArray; + // _VEC3 + + case 0x8b52: + return setValueV4fArray; + // _VEC4 + + case 0x8b5a: + return setValueM2Array; + // _MAT2 + + case 0x8b5b: + return setValueM3Array; + // _MAT3 + + case 0x8b5c: + return setValueM4Array; + // _MAT4 + + case 0x1404: + case 0x8b56: + return setValueV1iArray; + // INT, BOOL + + case 0x8b53: + case 0x8b57: + return setValueV2iArray; + // _VEC2 + + case 0x8b54: + case 0x8b58: + return setValueV3iArray; + // _VEC3 + + case 0x8b55: + case 0x8b59: + return setValueV4iArray; + // _VEC4 + + case 0x1405: + return setValueV1uiArray; + // UINT + + case 0x8dc6: + return setValueV2uiArray; + // _VEC2 + + case 0x8dc7: + return setValueV3uiArray; + // _VEC3 + + case 0x8dc8: + return setValueV4uiArray; + // _VEC4 + + case 0x8b5e: // SAMPLER_2D + + case 0x8d66: // SAMPLER_EXTERNAL_OES + + case 0x8dca: // INT_SAMPLER_2D + + case 0x8dd2: // UNSIGNED_INT_SAMPLER_2D + + case 0x8b62: + // SAMPLER_2D_SHADOW + return setValueT1Array; + + case 0x8b60: // SAMPLER_CUBE + + case 0x8dcc: // INT_SAMPLER_CUBE + + case 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE + + case 0x8dc5: + // SAMPLER_CUBE_SHADOW + return setValueT6Array; + } + } // --- Uniform Classes --- + + + function SingleUniform(id, activeInfo, addr) { + this.id = id; + this.addr = addr; + this.cache = []; + this.setValue = getSingularSetter(activeInfo.type); // this.path = activeInfo.name; // DEBUG + } + + function PureArrayUniform(id, activeInfo, addr) { + this.id = id; + this.addr = addr; + this.cache = []; + this.size = activeInfo.size; + this.setValue = getPureArraySetter(activeInfo.type); // this.path = activeInfo.name; // DEBUG + } + + PureArrayUniform.prototype.updateCache = function (data) { + const cache = this.cache; + + if (data instanceof Float32Array && cache.length !== data.length) { + this.cache = new Float32Array(data.length); + } + + copyArray(cache, data); + }; + + function StructuredUniform(id) { + this.id = id; + this.seq = []; + this.map = {}; + } + + StructuredUniform.prototype.setValue = function (gl, value, textures) { + const seq = this.seq; + + for (let i = 0, n = seq.length; i !== n; ++i) { + const u = seq[i]; + u.setValue(gl, value[u.id], textures); + } + }; // --- Top-level --- + // Parser - builds up the property tree from the path strings + + + const RePathPart = /(\w+)(\])?(\[|\.)?/g; // extracts + // - the identifier (member name or array index) + // - followed by an optional right bracket (found when array index) + // - followed by an optional left bracket or dot (type of subscript) + // + // Note: These portions can be read in a non-overlapping fashion and + // allow straightforward parsing of the hierarchy that WebGL encodes + // in the uniform names. + + function addUniform(container, uniformObject) { + container.seq.push(uniformObject); + container.map[uniformObject.id] = uniformObject; + } + + function parseUniform(activeInfo, addr, container) { + const path = activeInfo.name, + pathLength = path.length; // reset RegExp object, because of the early exit of a previous run + + RePathPart.lastIndex = 0; + + while (true) { + const match = RePathPart.exec(path), + matchEnd = RePathPart.lastIndex; + let id = match[1]; + const idIsIndex = match[2] === ']', + subscript = match[3]; + if (idIsIndex) id = id | 0; // convert to integer + + if (subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength) { + // bare name or "pure" bottom-level array "[0]" suffix + addUniform(container, subscript === undefined ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr)); + break; + } else { + // step into inner node / create it in case it doesn't exist + const map = container.map; + let next = map[id]; + + if (next === undefined) { + next = new StructuredUniform(id); + addUniform(container, next); + } + + container = next; + } + } + } // Root Container + + + function WebGLUniforms(gl, program) { + this.seq = []; + this.map = {}; + const n = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); + + for (let i = 0; i < n; ++i) { + const info = gl.getActiveUniform(program, i), + addr = gl.getUniformLocation(program, info.name); + parseUniform(info, addr, this); + } + } + + WebGLUniforms.prototype.setValue = function (gl, name, value, textures) { + const u = this.map[name]; + if (u !== undefined) u.setValue(gl, value, textures); + }; + + WebGLUniforms.prototype.setOptional = function (gl, object, name) { + const v = object[name]; + if (v !== undefined) this.setValue(gl, name, v); + }; // Static interface + + + WebGLUniforms.upload = function (gl, seq, values, textures) { + for (let i = 0, n = seq.length; i !== n; ++i) { + const u = seq[i], + v = values[u.id]; + + if (v.needsUpdate !== false) { + // note: always updating when .needsUpdate is undefined + u.setValue(gl, v.value, textures); + } + } + }; + + WebGLUniforms.seqWithValue = function (seq, values) { + const r = []; + + for (let i = 0, n = seq.length; i !== n; ++i) { + const u = seq[i]; + if (u.id in values) r.push(u); + } + + return r; + }; + + function WebGLShader(gl, type, string) { + const shader = gl.createShader(type); + gl.shaderSource(shader, string); + gl.compileShader(shader); + return shader; + } + + let programIdCount = 0; + + function addLineNumbers(string) { + const lines = string.split('\n'); + + for (let i = 0; i < lines.length; i++) { + lines[i] = i + 1 + ': ' + lines[i]; + } + + return lines.join('\n'); + } + + function getEncodingComponents(encoding) { + switch (encoding) { + case LinearEncoding: + return ['Linear', '( value )']; + + case sRGBEncoding: + return ['sRGB', '( value )']; + + case RGBEEncoding: + return ['RGBE', '( value )']; + + case RGBM7Encoding: + return ['RGBM', '( value, 7.0 )']; + + case RGBM16Encoding: + return ['RGBM', '( value, 16.0 )']; + + case RGBDEncoding: + return ['RGBD', '( value, 256.0 )']; + + case GammaEncoding: + return ['Gamma', '( value, float( GAMMA_FACTOR ) )']; + + case LogLuvEncoding: + return ['LogLuv', '( value )']; + + default: + console.warn('THREE.WebGLProgram: Unsupported encoding:', encoding); + return ['Linear', '( value )']; + } + } + + function getShaderErrors(gl, shader, type) { + const status = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + const errors = gl.getShaderInfoLog(shader).trim(); + if (status && errors === '') return ''; // --enable-privileged-webgl-extension + // console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); + + return type.toUpperCase() + '\n\n' + errors + '\n\n' + addLineNumbers(gl.getShaderSource(shader)); + } + + function getTexelDecodingFunction(functionName, encoding) { + const components = getEncodingComponents(encoding); + return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[0] + 'ToLinear' + components[1] + '; }'; + } + + function getTexelEncodingFunction(functionName, encoding) { + const components = getEncodingComponents(encoding); + return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[0] + components[1] + '; }'; + } + + function getToneMappingFunction(functionName, toneMapping) { + let toneMappingName; + + switch (toneMapping) { + case LinearToneMapping: + toneMappingName = 'Linear'; + break; + + case ReinhardToneMapping: + toneMappingName = 'Reinhard'; + break; + + case CineonToneMapping: + toneMappingName = 'OptimizedCineon'; + break; + + case ACESFilmicToneMapping: + toneMappingName = 'ACESFilmic'; + break; + + case CustomToneMapping: + toneMappingName = 'Custom'; + break; + + default: + console.warn('THREE.WebGLProgram: Unsupported toneMapping:', toneMapping); + toneMappingName = 'Linear'; + } + + return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; + } + + function generateExtensions(parameters) { + const chunks = [parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ? '#extension GL_OES_standard_derivatives : enable' : '', (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '', parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? '#extension GL_EXT_draw_buffers : require' : '', (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : '']; + return chunks.filter(filterEmptyLine).join('\n'); + } + + function generateDefines(defines) { + const chunks = []; + + for (const name in defines) { + const value = defines[name]; + if (value === false) continue; + chunks.push('#define ' + name + ' ' + value); + } + + return chunks.join('\n'); + } + + function fetchAttributeLocations(gl, program) { + const attributes = {}; + const n = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES); + + for (let i = 0; i < n; i++) { + const info = gl.getActiveAttrib(program, i); + const name = info.name; + let locationSize = 1; + if (info.type === gl.FLOAT_MAT2) locationSize = 2; + if (info.type === gl.FLOAT_MAT3) locationSize = 3; + if (info.type === gl.FLOAT_MAT4) locationSize = 4; // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); + + attributes[name] = { + type: info.type, + location: gl.getAttribLocation(program, name), + locationSize: locationSize + }; + } + + return attributes; + } + + function filterEmptyLine(string) { + return string !== ''; + } + + function replaceLightNums(string, parameters) { + return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows); + } + + function replaceClippingPlaneNums(string, parameters) { + return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection); + } // Resolve Includes + + + const includePattern = /^[ \t]*#include +<([\w\d./]+)>/gm; + + function resolveIncludes(string) { + return string.replace(includePattern, includeReplacer); + } + + function includeReplacer(match, include) { + const string = ShaderChunk[include]; + + if (string === undefined) { + throw new Error('Can not resolve #include <' + include + '>'); + } + + return resolveIncludes(string); + } // Unroll Loops + + + const deprecatedUnrollLoopPattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; + const unrollLoopPattern = /#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 unrollLoops(string) { + return string.replace(unrollLoopPattern, loopReplacer).replace(deprecatedUnrollLoopPattern, deprecatedLoopReplacer); + } + + function deprecatedLoopReplacer(match, start, end, snippet) { + console.warn('WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.'); + return loopReplacer(match, start, end, snippet); + } + + function loopReplacer(match, start, end, snippet) { + let string = ''; + + for (let i = parseInt(start); i < parseInt(end); i++) { + string += snippet.replace(/\[\s*i\s*\]/g, '[ ' + i + ' ]').replace(/UNROLLED_LOOP_INDEX/g, i); + } + + return string; + } // + + + function generatePrecision(parameters) { + let precisionstring = 'precision ' + parameters.precision + ' float;\nprecision ' + parameters.precision + ' int;'; + + if (parameters.precision === 'highp') { + precisionstring += '\n#define HIGH_PRECISION'; + } else if (parameters.precision === 'mediump') { + precisionstring += '\n#define MEDIUM_PRECISION'; + } else if (parameters.precision === 'lowp') { + precisionstring += '\n#define LOW_PRECISION'; + } + + return precisionstring; + } + + function generateShadowMapTypeDefine(parameters) { + let shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; + + if (parameters.shadowMapType === PCFShadowMap) { + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; + } else if (parameters.shadowMapType === PCFSoftShadowMap) { + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; + } else if (parameters.shadowMapType === VSMShadowMap) { + shadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM'; + } + + return shadowMapTypeDefine; + } + + function generateEnvMapTypeDefine(parameters) { + let envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + + if (parameters.envMap) { + switch (parameters.envMapMode) { + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + break; + + case CubeUVReflectionMapping: + case CubeUVRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; + break; + } + } + + return envMapTypeDefine; + } + + function generateEnvMapModeDefine(parameters) { + let envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; + + if (parameters.envMap) { + switch (parameters.envMapMode) { + case CubeRefractionMapping: + case CubeUVRefractionMapping: + envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; + break; + } + } + + return envMapModeDefine; + } + + function generateEnvMapBlendingDefine(parameters) { + let envMapBlendingDefine = 'ENVMAP_BLENDING_NONE'; + + if (parameters.envMap) { + switch (parameters.combine) { + case MultiplyOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + break; + + case MixOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; + break; + + case AddOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; + break; + } + } + + return envMapBlendingDefine; + } + + function WebGLProgram(renderer, cacheKey, parameters, bindingStates) { + // TODO Send this event to Three.js DevTools + // console.log( 'WebGLProgram', cacheKey ); + const gl = renderer.getContext(); + const defines = parameters.defines; + let vertexShader = parameters.vertexShader; + let fragmentShader = parameters.fragmentShader; + const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters); + const envMapTypeDefine = generateEnvMapTypeDefine(parameters); + const envMapModeDefine = generateEnvMapModeDefine(parameters); + const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters); + const gammaFactorDefine = renderer.gammaFactor > 0 ? renderer.gammaFactor : 1.0; + const customExtensions = parameters.isWebGL2 ? '' : generateExtensions(parameters); + const customDefines = generateDefines(defines); + const program = gl.createProgram(); + let prefixVertex, prefixFragment; + let versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\n' : ''; + + if (parameters.isRawShaderMaterial) { + prefixVertex = [customDefines].filter(filterEmptyLine).join('\n'); + + if (prefixVertex.length > 0) { + prefixVertex += '\n'; + } + + prefixFragment = [customExtensions, customDefines].filter(filterEmptyLine).join('\n'); + + if (prefixFragment.length > 0) { + prefixFragment += '\n'; + } + } else { + prefixVertex = [generatePrecision(parameters), '#define SHADER_NAME ' + parameters.shaderName, customDefines, parameters.instancing ? '#define USE_INSTANCING' : '', parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '', parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', '#define GAMMA_FACTOR ' + gammaFactorDefine, '#define MAX_BONES ' + parameters.maxBones, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap && parameters.objectSpaceNormalMap ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.normalMap && parameters.tangentSpaceNormalMap ? '#define TANGENTSPACE_NORMALMAP' : '', parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '', parameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.transmission ? '#define USE_TRANSMISSION' : '', parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '', parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors ? '#define USE_COLOR' : '', parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', parameters.vertexUvs ? '#define USE_UV' : '', parameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', parameters.flatShading ? '#define FLAT_SHADED' : '', parameters.skinning ? '#define USE_SKINNING' : '', parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', parameters.flipSided ? '#define FLIP_SIDED' : '', parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', parameters.logarithmicDepthBuffer && parameters.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', ' attribute mat4 instanceMatrix;', '#endif', '#ifdef USE_INSTANCING_COLOR', ' attribute vec3 instanceColor;', '#endif', 'attribute vec3 position;', 'attribute vec3 normal;', 'attribute vec2 uv;', '#ifdef USE_TANGENT', ' attribute vec4 tangent;', '#endif', '#if defined( USE_COLOR_ALPHA )', ' attribute vec4 color;', '#elif defined( USE_COLOR )', ' attribute vec3 color;', '#endif', '#ifdef USE_MORPHTARGETS', ' attribute vec3 morphTarget0;', ' attribute vec3 morphTarget1;', ' attribute vec3 morphTarget2;', ' attribute vec3 morphTarget3;', ' #ifdef USE_MORPHNORMALS', ' attribute vec3 morphNormal0;', ' attribute vec3 morphNormal1;', ' attribute vec3 morphNormal2;', ' attribute vec3 morphNormal3;', ' #else', ' attribute vec3 morphTarget4;', ' attribute vec3 morphTarget5;', ' attribute vec3 morphTarget6;', ' attribute vec3 morphTarget7;', ' #endif', '#endif', '#ifdef USE_SKINNING', ' attribute vec4 skinIndex;', ' attribute vec4 skinWeight;', '#endif', '\n'].filter(filterEmptyLine).join('\n'); + prefixFragment = [customExtensions, generatePrecision(parameters), '#define SHADER_NAME ' + parameters.shaderName, customDefines, '#define GAMMA_FACTOR ' + gammaFactorDefine, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', parameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.matcap ? '#define USE_MATCAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define ' + envMapTypeDefine : '', parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.envMap ? '#define ' + envMapBlendingDefine : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap && parameters.objectSpaceNormalMap ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.normalMap && parameters.tangentSpaceNormalMap ? '#define TANGENTSPACE_NORMALMAP' : '', parameters.clearcoat ? '#define USE_CLEARCOAT' : '', parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '', parameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.alphaTest ? '#define USE_ALPHATEST' : '', parameters.sheenTint ? '#define USE_SHEEN' : '', parameters.transmission ? '#define USE_TRANSMISSION' : '', parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '', parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '', parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', parameters.vertexUvs ? '#define USE_UV' : '', parameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', parameters.flatShading ? '#define FLAT_SHADED' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', parameters.flipSided ? '#define FLIP_SIDED' : '', parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? '#define USE_LOGDEPTHBUF_EXT' : '', (parameters.extensionShaderTextureLOD || parameters.envMap) && parameters.rendererExtensionShaderTextureLod ? '#define TEXTURE_LOD_EXT' : '', 'uniform mat4 viewMatrix;', 'uniform vec3 cameraPosition;', 'uniform bool isOrthographic;', parameters.toneMapping !== NoToneMapping ? '#define TONE_MAPPING' : '', parameters.toneMapping !== NoToneMapping ? ShaderChunk['tonemapping_pars_fragment'] : '', // this code is required here because it is used by the toneMapping() function defined below + parameters.toneMapping !== NoToneMapping ? getToneMappingFunction('toneMapping', parameters.toneMapping) : '', parameters.dithering ? '#define DITHERING' : '', parameters.format === RGBFormat ? '#define OPAQUE' : '', ShaderChunk['encodings_pars_fragment'], // this code is required here because it is used by the various encoding/decoding function defined below + parameters.map ? getTexelDecodingFunction('mapTexelToLinear', parameters.mapEncoding) : '', parameters.matcap ? getTexelDecodingFunction('matcapTexelToLinear', parameters.matcapEncoding) : '', parameters.envMap ? getTexelDecodingFunction('envMapTexelToLinear', parameters.envMapEncoding) : '', parameters.emissiveMap ? getTexelDecodingFunction('emissiveMapTexelToLinear', parameters.emissiveMapEncoding) : '', parameters.specularTintMap ? getTexelDecodingFunction('specularTintMapTexelToLinear', parameters.specularTintMapEncoding) : '', parameters.lightMap ? getTexelDecodingFunction('lightMapTexelToLinear', parameters.lightMapEncoding) : '', getTexelEncodingFunction('linearToOutputTexel', parameters.outputEncoding), parameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '', '\n'].filter(filterEmptyLine).join('\n'); + } + + vertexShader = resolveIncludes(vertexShader); + vertexShader = replaceLightNums(vertexShader, parameters); + vertexShader = replaceClippingPlaneNums(vertexShader, parameters); + fragmentShader = resolveIncludes(fragmentShader); + fragmentShader = replaceLightNums(fragmentShader, parameters); + fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters); + vertexShader = unrollLoops(vertexShader); + fragmentShader = unrollLoops(fragmentShader); + + if (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) { + // GLSL 3.0 conversion for built-in materials and ShaderMaterial + versionString = '#version 300 es\n'; + prefixVertex = ['#define attribute in', '#define varying out', '#define texture2D texture'].join('\n') + '\n' + prefixVertex; + prefixFragment = ['#define varying in', parameters.glslVersion === GLSL3 ? '' : 'out highp vec4 pc_fragColor;', parameters.glslVersion === GLSL3 ? '' : '#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' + prefixFragment; + } + + const vertexGlsl = versionString + prefixVertex + vertexShader; + const fragmentGlsl = versionString + prefixFragment + fragmentShader; // console.log( '*VERTEX*', vertexGlsl ); + // console.log( '*FRAGMENT*', fragmentGlsl ); + + const glVertexShader = WebGLShader(gl, gl.VERTEX_SHADER, vertexGlsl); + const glFragmentShader = WebGLShader(gl, gl.FRAGMENT_SHADER, fragmentGlsl); + gl.attachShader(program, glVertexShader); + gl.attachShader(program, glFragmentShader); // Force a particular attribute to index 0. + + if (parameters.index0AttributeName !== undefined) { + gl.bindAttribLocation(program, 0, parameters.index0AttributeName); + } else if (parameters.morphTargets === true) { + // programs with morphTargets displace position out of attribute 0 + gl.bindAttribLocation(program, 0, 'position'); + } + + gl.linkProgram(program); // check for link errors + + if (renderer.debug.checkShaderErrors) { + const programLog = gl.getProgramInfoLog(program).trim(); + const vertexLog = gl.getShaderInfoLog(glVertexShader).trim(); + const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim(); + let runnable = true; + let haveDiagnostics = true; + + if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) { + runnable = false; + const vertexErrors = getShaderErrors(gl, glVertexShader, 'vertex'); + const fragmentErrors = getShaderErrors(gl, glFragmentShader, 'fragment'); + console.error('THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' + 'VALIDATE_STATUS ' + gl.getProgramParameter(program, gl.VALIDATE_STATUS) + '\n\n' + 'Program Info Log: ' + programLog + '\n' + vertexErrors + '\n' + fragmentErrors); + } else if (programLog !== '') { + console.warn('THREE.WebGLProgram: Program Info Log:', programLog); + } else if (vertexLog === '' || fragmentLog === '') { + haveDiagnostics = false; + } + + if (haveDiagnostics) { + this.diagnostics = { + runnable: runnable, + programLog: programLog, + vertexShader: { + log: vertexLog, + prefix: prefixVertex + }, + fragmentShader: { + log: fragmentLog, + prefix: prefixFragment + } + }; + } + } // Clean up + // Crashes in iOS9 and iOS10. #18402 + // gl.detachShader( program, glVertexShader ); + // gl.detachShader( program, glFragmentShader ); + + + gl.deleteShader(glVertexShader); + gl.deleteShader(glFragmentShader); // set up caching for uniform locations + + let cachedUniforms; + + this.getUniforms = function () { + if (cachedUniforms === undefined) { + cachedUniforms = new WebGLUniforms(gl, program); + } + + return cachedUniforms; + }; // set up caching for attribute locations + + + let cachedAttributes; + + this.getAttributes = function () { + if (cachedAttributes === undefined) { + cachedAttributes = fetchAttributeLocations(gl, program); + } + + return cachedAttributes; + }; // free resource + + + this.destroy = function () { + bindingStates.releaseStatesOfProgram(this); + gl.deleteProgram(program); + this.program = undefined; + }; // + + + this.name = parameters.shaderName; + this.id = programIdCount++; + this.cacheKey = cacheKey; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + return this; + } + + function WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) { + const programs = []; + const isWebGL2 = capabilities.isWebGL2; + const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer; + const floatVertexTextures = capabilities.floatVertexTextures; + const maxVertexUniforms = capabilities.maxVertexUniforms; + const vertexTextures = capabilities.vertexTextures; + let precision = capabilities.precision; + const shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'toon', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite' + }; + const parameterNames = ['precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor', 'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV', 'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap', 'objectSpaceNormalMap', 'tangentSpaceNormalMap', 'clearcoat', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap', 'displacementMap', 'specularMap', 'specularIntensityMap', 'specularTintMap', 'specularTintMapEncoding', 'roughnessMap', 'metalnessMap', 'gradientMap', 'alphaMap', 'alphaTest', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2', 'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning', 'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'premultipliedAlpha', 'numDirLights', 'numPointLights', 'numSpotLights', 'numHemiLights', 'numRectAreaLights', 'numDirLightShadows', 'numPointLightShadows', 'numSpotLightShadows', 'shadowMapEnabled', 'shadowMapType', 'toneMapping', 'physicallyCorrectLights', 'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering', 'format', 'sheenTint', 'transmission', 'transmissionMap', 'thicknessMap']; + + function getMaxBones(object) { + const skeleton = object.skeleton; + const bones = skeleton.bones; + + if (floatVertexTextures) { + return 1024; + } else { + // default for when object is not specified + // ( for example when prebuilding shader to be used with multiple objects ) + // + // - leave some extra space for other uniforms + // - limit here is ANGLE's 254 max uniform vectors + // (up to 54 should be safe) + const nVertexUniforms = maxVertexUniforms; + const nVertexMatrices = Math.floor((nVertexUniforms - 20) / 4); + const maxBones = Math.min(nVertexMatrices, bones.length); + + if (maxBones < bones.length) { + console.warn('THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.'); + return 0; + } + + return maxBones; + } + } + + function getTextureEncodingFromMap(map) { + let encoding; + + if (map && map.isTexture) { + encoding = map.encoding; + } else if (map && map.isWebGLRenderTarget) { + console.warn('THREE.WebGLPrograms.getTextureEncodingFromMap: don\'t use render targets as textures. Use their .texture property instead.'); + encoding = map.texture.encoding; + } else { + encoding = LinearEncoding; + } + + return encoding; + } + + function getParameters(material, lights, shadows, scene, object) { + const fog = scene.fog; + const environment = material.isMeshStandardMaterial ? scene.environment : null; + const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment); + const shaderID = shaderIDs[material.type]; // heuristics to create shader parameters according to lights in the scene + // (not to blow over maxLights budget) + + const maxBones = object.isSkinnedMesh ? getMaxBones(object) : 0; + + if (material.precision !== null) { + precision = capabilities.getMaxPrecision(material.precision); + + if (precision !== material.precision) { + console.warn('THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.'); + } + } + + let vertexShader, fragmentShader; + + if (shaderID) { + const shader = ShaderLib[shaderID]; + vertexShader = shader.vertexShader; + fragmentShader = shader.fragmentShader; + } else { + vertexShader = material.vertexShader; + fragmentShader = material.fragmentShader; + } + + const currentRenderTarget = renderer.getRenderTarget(); + const useAlphaTest = material.alphaTest > 0; + const useClearcoat = material.clearcoat > 0; + const parameters = { + isWebGL2: isWebGL2, + shaderID: shaderID, + shaderName: material.type, + vertexShader: vertexShader, + fragmentShader: fragmentShader, + defines: material.defines, + isRawShaderMaterial: material.isRawShaderMaterial === true, + glslVersion: material.glslVersion, + precision: precision, + instancing: object.isInstancedMesh === true, + instancingColor: object.isInstancedMesh === true && object.instanceColor !== null, + supportsVertexTextures: vertexTextures, + outputEncoding: currentRenderTarget !== null ? getTextureEncodingFromMap(currentRenderTarget.texture) : renderer.outputEncoding, + map: !!material.map, + mapEncoding: getTextureEncodingFromMap(material.map), + matcap: !!material.matcap, + matcapEncoding: getTextureEncodingFromMap(material.matcap), + envMap: !!envMap, + envMapMode: envMap && envMap.mapping, + envMapEncoding: getTextureEncodingFromMap(envMap), + envMapCubeUV: !!envMap && (envMap.mapping === CubeUVReflectionMapping || envMap.mapping === CubeUVRefractionMapping), + lightMap: !!material.lightMap, + lightMapEncoding: getTextureEncodingFromMap(material.lightMap), + aoMap: !!material.aoMap, + emissiveMap: !!material.emissiveMap, + emissiveMapEncoding: getTextureEncodingFromMap(material.emissiveMap), + bumpMap: !!material.bumpMap, + normalMap: !!material.normalMap, + objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, + tangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap, + clearcoat: useClearcoat, + clearcoatMap: useClearcoat && !!material.clearcoatMap, + clearcoatRoughnessMap: useClearcoat && !!material.clearcoatRoughnessMap, + clearcoatNormalMap: useClearcoat && !!material.clearcoatNormalMap, + displacementMap: !!material.displacementMap, + roughnessMap: !!material.roughnessMap, + metalnessMap: !!material.metalnessMap, + specularMap: !!material.specularMap, + specularIntensityMap: !!material.specularIntensityMap, + specularTintMap: !!material.specularTintMap, + specularTintMapEncoding: getTextureEncodingFromMap(material.specularTintMap), + alphaMap: !!material.alphaMap, + alphaTest: useAlphaTest, + gradientMap: !!material.gradientMap, + sheenTint: !!material.sheenTint && (material.sheenTint.r > 0 || material.sheenTint.g > 0 || material.sheenTint.b > 0), + transmission: material.transmission > 0, + transmissionMap: !!material.transmissionMap, + thicknessMap: !!material.thicknessMap, + combine: material.combine, + vertexTangents: !!material.normalMap && !!object.geometry && !!object.geometry.attributes.tangent, + vertexColors: material.vertexColors, + vertexAlphas: material.vertexColors === true && !!object.geometry && !!object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4, + vertexUvs: !!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatMap || !!material.clearcoatRoughnessMap || !!material.clearcoatNormalMap || !!material.displacementMap || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularTintMap, + uvsVertexOnly: !(!!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatNormalMap || material.transmission > 0 || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularTintMap) && !!material.displacementMap, + fog: !!fog, + useFog: material.fog, + fogExp2: fog && fog.isFogExp2, + flatShading: !!material.flatShading, + sizeAttenuation: material.sizeAttenuation, + logarithmicDepthBuffer: logarithmicDepthBuffer, + skinning: object.isSkinnedMesh === true && maxBones > 0, + maxBones: maxBones, + useVertexTexture: floatVertexTextures, + morphTargets: !!object.geometry && !!object.geometry.morphAttributes.position, + morphNormals: !!object.geometry && !!object.geometry.morphAttributes.normal, + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + numDirLightShadows: lights.directionalShadowMap.length, + numPointLightShadows: lights.pointShadowMap.length, + numSpotLightShadows: lights.spotShadowMap.length, + numClippingPlanes: clipping.numPlanes, + numClipIntersection: clipping.numIntersection, + format: material.format, + dithering: material.dithering, + shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping, + physicallyCorrectLights: renderer.physicallyCorrectLights, + premultipliedAlpha: material.premultipliedAlpha, + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + depthPacking: material.depthPacking !== undefined ? material.depthPacking : false, + index0AttributeName: material.index0AttributeName, + extensionDerivatives: material.extensions && material.extensions.derivatives, + extensionFragDepth: material.extensions && material.extensions.fragDepth, + extensionDrawBuffers: material.extensions && material.extensions.drawBuffers, + extensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD, + rendererExtensionFragDepth: isWebGL2 || extensions.has('EXT_frag_depth'), + rendererExtensionDrawBuffers: isWebGL2 || extensions.has('WEBGL_draw_buffers'), + rendererExtensionShaderTextureLod: isWebGL2 || extensions.has('EXT_shader_texture_lod'), + customProgramCacheKey: material.customProgramCacheKey() + }; + return parameters; + } + + function getProgramCacheKey(parameters) { + const array = []; + + if (parameters.shaderID) { + array.push(parameters.shaderID); + } else { + array.push(parameters.fragmentShader); + array.push(parameters.vertexShader); + } + + if (parameters.defines !== undefined) { + for (const name in parameters.defines) { + array.push(name); + array.push(parameters.defines[name]); + } + } + + if (parameters.isRawShaderMaterial === false) { + for (let i = 0; i < parameterNames.length; i++) { + array.push(parameters[parameterNames[i]]); + } + + array.push(renderer.outputEncoding); + array.push(renderer.gammaFactor); + } + + array.push(parameters.customProgramCacheKey); + return array.join(); + } + + function getUniforms(material) { + const shaderID = shaderIDs[material.type]; + let uniforms; + + if (shaderID) { + const shader = ShaderLib[shaderID]; + uniforms = UniformsUtils.clone(shader.uniforms); + } else { + uniforms = material.uniforms; + } + + return uniforms; + } + + function acquireProgram(parameters, cacheKey) { + let program; // Check if code has been already compiled + + for (let p = 0, pl = programs.length; p < pl; p++) { + const preexistingProgram = programs[p]; + + if (preexistingProgram.cacheKey === cacheKey) { + program = preexistingProgram; + ++program.usedTimes; + break; + } + } + + if (program === undefined) { + program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates); + programs.push(program); + } + + return program; + } + + function releaseProgram(program) { + if (--program.usedTimes === 0) { + // Remove from unordered set + const i = programs.indexOf(program); + programs[i] = programs[programs.length - 1]; + programs.pop(); // Free WebGL resources + + program.destroy(); + } + } + + return { + getParameters: getParameters, + getProgramCacheKey: getProgramCacheKey, + getUniforms: getUniforms, + acquireProgram: acquireProgram, + releaseProgram: releaseProgram, + // Exposed for resource monitoring & error feedback via renderer.info: + programs: programs + }; + } + + function WebGLProperties() { + let properties = new WeakMap(); + + function get(object) { + let map = properties.get(object); + + if (map === undefined) { + map = {}; + properties.set(object, map); + } + + return map; + } + + function remove(object) { + properties.delete(object); + } + + function update(object, key, value) { + properties.get(object)[key] = value; + } + + function dispose() { + properties = new WeakMap(); + } + + return { + get: get, + remove: remove, + update: update, + dispose: dispose + }; + } + + function painterSortStable(a, b) { + if (a.groupOrder !== b.groupOrder) { + return a.groupOrder - b.groupOrder; + } else if (a.renderOrder !== b.renderOrder) { + return a.renderOrder - b.renderOrder; + } else if (a.program !== b.program) { + return a.program.id - b.program.id; + } else if (a.material.id !== b.material.id) { + return a.material.id - b.material.id; + } else if (a.z !== b.z) { + return a.z - b.z; + } else { + return a.id - b.id; + } + } + + function reversePainterSortStable(a, b) { + if (a.groupOrder !== b.groupOrder) { + return a.groupOrder - b.groupOrder; + } else if (a.renderOrder !== b.renderOrder) { + return a.renderOrder - b.renderOrder; + } else if (a.z !== b.z) { + return b.z - a.z; + } else { + return a.id - b.id; + } + } + + function WebGLRenderList(properties) { + const renderItems = []; + let renderItemsIndex = 0; + const opaque = []; + const transmissive = []; + const transparent = []; + const defaultProgram = { + id: -1 + }; + + function init() { + renderItemsIndex = 0; + opaque.length = 0; + transmissive.length = 0; + transparent.length = 0; + } + + function getNextRenderItem(object, geometry, material, groupOrder, z, group) { + let renderItem = renderItems[renderItemsIndex]; + const materialProperties = properties.get(material); + + if (renderItem === undefined) { + renderItem = { + id: object.id, + object: object, + geometry: geometry, + material: material, + program: materialProperties.program || defaultProgram, + groupOrder: groupOrder, + renderOrder: object.renderOrder, + z: z, + group: group + }; + renderItems[renderItemsIndex] = renderItem; + } else { + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.program = materialProperties.program || defaultProgram; + renderItem.groupOrder = groupOrder; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + } + + renderItemsIndex++; + return renderItem; + } + + function push(object, geometry, material, groupOrder, z, group) { + const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group); + + if (material.transmission > 0.0) { + transmissive.push(renderItem); + } else if (material.transparent === true) { + transparent.push(renderItem); + } else { + opaque.push(renderItem); + } + } + + function unshift(object, geometry, material, groupOrder, z, group) { + const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group); + + if (material.transmission > 0.0) { + transmissive.unshift(renderItem); + } else if (material.transparent === true) { + transparent.unshift(renderItem); + } else { + opaque.unshift(renderItem); + } + } + + function sort(customOpaqueSort, customTransparentSort) { + if (opaque.length > 1) opaque.sort(customOpaqueSort || painterSortStable); + if (transmissive.length > 1) transmissive.sort(customTransparentSort || reversePainterSortStable); + if (transparent.length > 1) transparent.sort(customTransparentSort || reversePainterSortStable); + } + + function finish() { + // Clear references from inactive renderItems in the list + for (let i = renderItemsIndex, il = renderItems.length; i < il; i++) { + const renderItem = renderItems[i]; + if (renderItem.id === null) break; + renderItem.id = null; + renderItem.object = null; + renderItem.geometry = null; + renderItem.material = null; + renderItem.program = null; + renderItem.group = null; + } + } + + return { + opaque: opaque, + transmissive: transmissive, + transparent: transparent, + init: init, + push: push, + unshift: unshift, + finish: finish, + sort: sort + }; + } + + function WebGLRenderLists(properties) { + let lists = new WeakMap(); + + function get(scene, renderCallDepth) { + let list; + + if (lists.has(scene) === false) { + list = new WebGLRenderList(properties); + lists.set(scene, [list]); + } else { + if (renderCallDepth >= lists.get(scene).length) { + list = new WebGLRenderList(properties); + lists.get(scene).push(list); + } else { + list = lists.get(scene)[renderCallDepth]; + } + } + + return list; + } + + function dispose() { + lists = new WeakMap(); + } + + return { + get: get, + dispose: dispose + }; + } + + function UniformsCache() { + const lights = {}; + return { + get: function (light) { + if (lights[light.id] !== undefined) { + return lights[light.id]; + } + + let uniforms; + + switch (light.type) { + case 'DirectionalLight': + uniforms = { + direction: new Vector3(), + color: new Color() + }; + break; + + case 'SpotLight': + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0 + }; + break; + + case 'PointLight': + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0 + }; + break; + + case 'HemisphereLight': + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + + case 'RectAreaLight': + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + }; + break; + } + + lights[light.id] = uniforms; + return uniforms; + } + }; + } + + function ShadowUniformsCache() { + const lights = {}; + return { + get: function (light) { + if (lights[light.id] !== undefined) { + return lights[light.id]; + } + + let uniforms; + + switch (light.type) { + case 'DirectionalLight': + uniforms = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'SpotLight': + uniforms = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'PointLight': + uniforms = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1000 + }; + break; + // TODO (abelnation): set RectAreaLight shadow uniforms + } + + lights[light.id] = uniforms; + return uniforms; + } + }; + } + + let nextVersion = 0; + + function shadowCastingLightsFirst(lightA, lightB) { + return (lightB.castShadow ? 1 : 0) - (lightA.castShadow ? 1 : 0); + } + + function WebGLLights(extensions, capabilities) { + const cache = new UniformsCache(); + const shadowCache = ShadowUniformsCache(); + const state = { + 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: [] + }; + + for (let i = 0; i < 9; i++) state.probe.push(new Vector3()); + + const vector3 = new Vector3(); + const matrix4 = new Matrix4(); + const matrix42 = new Matrix4(); + + function setup(lights, physicallyCorrectLights) { + let r = 0, + g = 0, + b = 0; + + for (let i = 0; i < 9; i++) state.probe[i].set(0, 0, 0); + + let directionalLength = 0; + let pointLength = 0; + let spotLength = 0; + let rectAreaLength = 0; + let hemiLength = 0; + let numDirectionalShadows = 0; + let numPointShadows = 0; + let numSpotShadows = 0; + lights.sort(shadowCastingLightsFirst); // artist-friendly light intensity scaling factor + + const scaleFactor = physicallyCorrectLights !== true ? Math.PI : 1; + + for (let i = 0, l = lights.length; i < l; i++) { + const light = lights[i]; + const color = light.color; + const intensity = light.intensity; + const distance = light.distance; + const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null; + + if (light.isAmbientLight) { + r += color.r * intensity * scaleFactor; + g += color.g * intensity * scaleFactor; + b += color.b * intensity * scaleFactor; + } else if (light.isLightProbe) { + for (let j = 0; j < 9; j++) { + state.probe[j].addScaledVector(light.sh.coefficients[j], intensity); + } + } else if (light.isDirectionalLight) { + const uniforms = cache.get(light); + uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor); + + if (light.castShadow) { + const shadow = light.shadow; + const shadowUniforms = shadowCache.get(light); + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + state.directionalShadow[directionalLength] = shadowUniforms; + state.directionalShadowMap[directionalLength] = shadowMap; + state.directionalShadowMatrix[directionalLength] = light.shadow.matrix; + numDirectionalShadows++; + } + + state.directional[directionalLength] = uniforms; + directionalLength++; + } else if (light.isSpotLight) { + const uniforms = cache.get(light); + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor); + uniforms.distance = distance; + uniforms.coneCos = Math.cos(light.angle); + uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra)); + uniforms.decay = light.decay; + + if (light.castShadow) { + const shadow = light.shadow; + const shadowUniforms = shadowCache.get(light); + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + state.spotShadow[spotLength] = shadowUniforms; + state.spotShadowMap[spotLength] = shadowMap; + state.spotShadowMatrix[spotLength] = light.shadow.matrix; + numSpotShadows++; + } + + state.spot[spotLength] = uniforms; + spotLength++; + } else if (light.isRectAreaLight) { + const uniforms = cache.get(light); // (a) intensity is the total visible light emitted + //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); + // (b) intensity is the brightness of the light + + uniforms.color.copy(color).multiplyScalar(intensity); + uniforms.halfWidth.set(light.width * 0.5, 0.0, 0.0); + uniforms.halfHeight.set(0.0, light.height * 0.5, 0.0); + state.rectArea[rectAreaLength] = uniforms; + rectAreaLength++; + } else if (light.isPointLight) { + const uniforms = cache.get(light); + uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor); + uniforms.distance = light.distance; + uniforms.decay = light.decay; + + if (light.castShadow) { + const shadow = light.shadow; + const shadowUniforms = shadowCache.get(light); + shadowUniforms.shadowBias = shadow.bias; + shadowUniforms.shadowNormalBias = shadow.normalBias; + shadowUniforms.shadowRadius = shadow.radius; + shadowUniforms.shadowMapSize = shadow.mapSize; + shadowUniforms.shadowCameraNear = shadow.camera.near; + shadowUniforms.shadowCameraFar = shadow.camera.far; + state.pointShadow[pointLength] = shadowUniforms; + state.pointShadowMap[pointLength] = shadowMap; + state.pointShadowMatrix[pointLength] = light.shadow.matrix; + numPointShadows++; + } + + state.point[pointLength] = uniforms; + pointLength++; + } else if (light.isHemisphereLight) { + const uniforms = cache.get(light); + uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor); + uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor); + state.hemi[hemiLength] = uniforms; + hemiLength++; + } + } + + if (rectAreaLength > 0) { + if (capabilities.isWebGL2) { + // WebGL 2 + state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1; + state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2; + } else { + // WebGL 1 + if (extensions.has('OES_texture_float_linear') === true) { + state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1; + state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2; + } else if (extensions.has('OES_texture_half_float_linear') === true) { + state.rectAreaLTC1 = UniformsLib.LTC_HALF_1; + state.rectAreaLTC2 = UniformsLib.LTC_HALF_2; + } else { + console.error('THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.'); + } + } + } + + state.ambient[0] = r; + state.ambient[1] = g; + state.ambient[2] = b; + const hash = state.hash; + + if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows) { + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + state.directionalShadow.length = numDirectionalShadows; + state.directionalShadowMap.length = numDirectionalShadows; + state.pointShadow.length = numPointShadows; + state.pointShadowMap.length = numPointShadows; + state.spotShadow.length = numSpotShadows; + state.spotShadowMap.length = numSpotShadows; + state.directionalShadowMatrix.length = numDirectionalShadows; + state.pointShadowMatrix.length = numPointShadows; + state.spotShadowMatrix.length = numSpotShadows; + hash.directionalLength = directionalLength; + hash.pointLength = pointLength; + hash.spotLength = spotLength; + hash.rectAreaLength = rectAreaLength; + hash.hemiLength = hemiLength; + hash.numDirectionalShadows = numDirectionalShadows; + hash.numPointShadows = numPointShadows; + hash.numSpotShadows = numSpotShadows; + state.version = nextVersion++; + } + } + + function setupView(lights, camera) { + let directionalLength = 0; + let pointLength = 0; + let spotLength = 0; + let rectAreaLength = 0; + let hemiLength = 0; + const viewMatrix = camera.matrixWorldInverse; + + for (let i = 0, l = lights.length; i < l; i++) { + const light = lights[i]; + + if (light.isDirectionalLight) { + const uniforms = state.directional[directionalLength]; + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + vector3.setFromMatrixPosition(light.target.matrixWorld); + uniforms.direction.sub(vector3); + uniforms.direction.transformDirection(viewMatrix); + directionalLength++; + } else if (light.isSpotLight) { + const uniforms = state.spot[spotLength]; + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + vector3.setFromMatrixPosition(light.target.matrixWorld); + uniforms.direction.sub(vector3); + uniforms.direction.transformDirection(viewMatrix); + spotLength++; + } else if (light.isRectAreaLight) { + const uniforms = state.rectArea[rectAreaLength]; + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); // extract local rotation of light to derive width/height half vectors + + matrix42.identity(); + matrix4.copy(light.matrixWorld); + matrix4.premultiply(viewMatrix); + matrix42.extractRotation(matrix4); + uniforms.halfWidth.set(light.width * 0.5, 0.0, 0.0); + uniforms.halfHeight.set(0.0, light.height * 0.5, 0.0); + uniforms.halfWidth.applyMatrix4(matrix42); + uniforms.halfHeight.applyMatrix4(matrix42); + rectAreaLength++; + } else if (light.isPointLight) { + const uniforms = state.point[pointLength]; + uniforms.position.setFromMatrixPosition(light.matrixWorld); + uniforms.position.applyMatrix4(viewMatrix); + pointLength++; + } else if (light.isHemisphereLight) { + const uniforms = state.hemi[hemiLength]; + uniforms.direction.setFromMatrixPosition(light.matrixWorld); + uniforms.direction.transformDirection(viewMatrix); + uniforms.direction.normalize(); + hemiLength++; + } + } + } + + return { + setup: setup, + setupView: setupView, + state: state + }; + } + + function WebGLRenderState(extensions, capabilities) { + const lights = new WebGLLights(extensions, capabilities); + const lightsArray = []; + const shadowsArray = []; + + function init() { + lightsArray.length = 0; + shadowsArray.length = 0; + } + + function pushLight(light) { + lightsArray.push(light); + } + + function pushShadow(shadowLight) { + shadowsArray.push(shadowLight); + } + + function setupLights(physicallyCorrectLights) { + lights.setup(lightsArray, physicallyCorrectLights); + } + + function setupLightsView(camera) { + lights.setupView(lightsArray, camera); + } + + const state = { + lightsArray: lightsArray, + shadowsArray: shadowsArray, + lights: lights + }; + return { + init: init, + state: state, + setupLights: setupLights, + setupLightsView: setupLightsView, + pushLight: pushLight, + pushShadow: pushShadow + }; + } + + function WebGLRenderStates(extensions, capabilities) { + let renderStates = new WeakMap(); + + function get(scene, renderCallDepth = 0) { + let renderState; + + if (renderStates.has(scene) === false) { + renderState = new WebGLRenderState(extensions, capabilities); + renderStates.set(scene, [renderState]); + } else { + if (renderCallDepth >= renderStates.get(scene).length) { + renderState = new WebGLRenderState(extensions, capabilities); + renderStates.get(scene).push(renderState); + } else { + renderState = renderStates.get(scene)[renderCallDepth]; + } + } + + return renderState; + } + + function dispose() { + renderStates = new WeakMap(); + } + + return { + get: get, + dispose: dispose + }; + } + + /** + * parameters = { + * + * opacity: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * } + */ + + class MeshDepthMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'MeshDepthMaterial'; + this.depthPacking = BasicDepthPacking; + this.map = null; + this.alphaMap = null; + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.fog = false; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.depthPacking = source.depthPacking; + this.map = source.map; + this.alphaMap = source.alphaMap; + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + return this; + } + + } + + MeshDepthMaterial.prototype.isMeshDepthMaterial = true; + + /** + * parameters = { + * + * referencePosition: , + * nearDistance: , + * farDistance: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: + * + * } + */ + + class MeshDistanceMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'MeshDistanceMaterial'; + this.referencePosition = new Vector3(); + this.nearDistance = 1; + this.farDistance = 1000; + this.map = null; + this.alphaMap = null; + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.fog = false; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.referencePosition.copy(source.referencePosition); + this.nearDistance = source.nearDistance; + this.farDistance = source.farDistance; + this.map = source.map; + this.alphaMap = source.alphaMap; + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + return this; + } + + } + + MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; + + var vsm_frag = "uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\nuniform float samples;\n#include \nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 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, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"; + + var vsm_vert = "void main() {\n\tgl_Position = vec4( position, 1.0 );\n}"; + + function WebGLShadowMap(_renderer, _objects, _capabilities) { + let _frustum = new Frustum(); + + const _shadowMapSize = new Vector2(), + _viewportSize = new Vector2(), + _viewport = new Vector4(), + _depthMaterial = new MeshDepthMaterial({ + depthPacking: RGBADepthPacking + }), + _distanceMaterial = new MeshDistanceMaterial(), + _materialCache = {}, + _maxTextureSize = _capabilities.maxTextureSize; + + const shadowSide = { + 0: BackSide, + 1: FrontSide, + 2: DoubleSide + }; + const shadowMaterialVertical = new ShaderMaterial({ + uniforms: { + shadow_pass: { + value: null + }, + resolution: { + value: new Vector2() + }, + radius: { + value: 4.0 + }, + samples: { + value: 8.0 + } + }, + vertexShader: vsm_vert, + fragmentShader: vsm_frag + }); + const shadowMaterialHorizontal = shadowMaterialVertical.clone(); + shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1; + const fullScreenTri = new BufferGeometry(); + fullScreenTri.setAttribute('position', new BufferAttribute(new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), 3)); + const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical); + const scope = this; + this.enabled = false; + this.autoUpdate = true; + this.needsUpdate = false; + this.type = PCFShadowMap; + + this.render = function (lights, scene, camera) { + if (scope.enabled === false) return; + if (scope.autoUpdate === false && scope.needsUpdate === false) return; + if (lights.length === 0) return; + + const currentRenderTarget = _renderer.getRenderTarget(); + + const activeCubeFace = _renderer.getActiveCubeFace(); + + const activeMipmapLevel = _renderer.getActiveMipmapLevel(); + + const _state = _renderer.state; // Set GL state for depth map. + + _state.setBlending(NoBlending); + + _state.buffers.color.setClear(1, 1, 1, 1); + + _state.buffers.depth.setTest(true); + + _state.setScissorTest(false); // render depth map + + + for (let i = 0, il = lights.length; i < il; i++) { + const light = lights[i]; + const shadow = light.shadow; + + if (shadow === undefined) { + console.warn('THREE.WebGLShadowMap:', light, 'has no shadow.'); + continue; + } + + if (shadow.autoUpdate === false && shadow.needsUpdate === false) continue; + + _shadowMapSize.copy(shadow.mapSize); + + const shadowFrameExtents = shadow.getFrameExtents(); + + _shadowMapSize.multiply(shadowFrameExtents); + + _viewportSize.copy(shadow.mapSize); + + if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) { + if (_shadowMapSize.x > _maxTextureSize) { + _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x); + _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x; + shadow.mapSize.x = _viewportSize.x; + } + + if (_shadowMapSize.y > _maxTextureSize) { + _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y); + _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y; + shadow.mapSize.y = _viewportSize.y; + } + } + + if (shadow.map === null && !shadow.isPointLightShadow && this.type === VSMShadowMap) { + const pars = { + minFilter: LinearFilter, + magFilter: LinearFilter, + format: RGBAFormat + }; + shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars); + shadow.map.texture.name = light.name + '.shadowMap'; + shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars); + shadow.camera.updateProjectionMatrix(); + } + + if (shadow.map === null) { + const pars = { + minFilter: NearestFilter, + magFilter: NearestFilter, + format: RGBAFormat + }; + shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars); + shadow.map.texture.name = light.name + '.shadowMap'; + shadow.camera.updateProjectionMatrix(); + } + + _renderer.setRenderTarget(shadow.map); + + _renderer.clear(); + + const viewportCount = shadow.getViewportCount(); + + for (let vp = 0; vp < viewportCount; vp++) { + const viewport = shadow.getViewport(vp); + + _viewport.set(_viewportSize.x * viewport.x, _viewportSize.y * viewport.y, _viewportSize.x * viewport.z, _viewportSize.y * viewport.w); + + _state.viewport(_viewport); + + shadow.updateMatrices(light, vp); + _frustum = shadow.getFrustum(); + renderObject(scene, camera, shadow.camera, light, this.type); + } // do blur pass for VSM + + + if (!shadow.isPointLightShadow && this.type === VSMShadowMap) { + VSMPass(shadow, camera); + } + + shadow.needsUpdate = false; + } + + scope.needsUpdate = false; + + _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel); + }; + + function VSMPass(shadow, camera) { + const geometry = _objects.update(fullScreenMesh); // vertical pass + + + shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture; + shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize; + shadowMaterialVertical.uniforms.radius.value = shadow.radius; + shadowMaterialVertical.uniforms.samples.value = shadow.blurSamples; + + _renderer.setRenderTarget(shadow.mapPass); + + _renderer.clear(); + + _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null); // horizontal pass + + + shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture; + shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize; + shadowMaterialHorizontal.uniforms.radius.value = shadow.radius; + shadowMaterialHorizontal.uniforms.samples.value = shadow.blurSamples; + + _renderer.setRenderTarget(shadow.map); + + _renderer.clear(); + + _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null); + } + + function getDepthMaterial(object, geometry, material, light, shadowCameraNear, shadowCameraFar, type) { + let result = null; + const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial; + + if (customMaterial !== undefined) { + result = customMaterial; + } else { + result = light.isPointLight === true ? _distanceMaterial : _depthMaterial; + } + + if (_renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0) { + // in this case we need a unique material instance reflecting the + // appropriate state + const keyA = result.uuid, + keyB = material.uuid; + let materialsForVariant = _materialCache[keyA]; + + if (materialsForVariant === undefined) { + materialsForVariant = {}; + _materialCache[keyA] = materialsForVariant; + } + + let cachedMaterial = materialsForVariant[keyB]; + + if (cachedMaterial === undefined) { + cachedMaterial = result.clone(); + materialsForVariant[keyB] = cachedMaterial; + } + + result = cachedMaterial; + } + + result.visible = material.visible; + result.wireframe = material.wireframe; + + if (type === VSMShadowMap) { + result.side = material.shadowSide !== null ? material.shadowSide : material.side; + } else { + result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side]; + } + + result.alphaMap = material.alphaMap; + result.alphaTest = material.alphaTest; + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + result.displacementMap = material.displacementMap; + result.displacementScale = material.displacementScale; + result.displacementBias = material.displacementBias; + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + + if (light.isPointLight === true && result.isMeshDistanceMaterial === true) { + result.referencePosition.setFromMatrixPosition(light.matrixWorld); + result.nearDistance = shadowCameraNear; + result.farDistance = shadowCameraFar; + } + + return result; + } + + function renderObject(object, camera, shadowCamera, light, type) { + if (object.visible === false) return; + const visible = object.layers.test(camera.layers); + + if (visible && (object.isMesh || object.isLine || object.isPoints)) { + if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) { + object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld); + + const geometry = _objects.update(object); + + const material = object.material; + + if (Array.isArray(material)) { + const groups = geometry.groups; + + for (let k = 0, kl = groups.length; k < kl; k++) { + const group = groups[k]; + const groupMaterial = material[group.materialIndex]; + + if (groupMaterial && groupMaterial.visible) { + const depthMaterial = getDepthMaterial(object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type); + + _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group); + } + } + } else if (material.visible) { + const depthMaterial = getDepthMaterial(object, geometry, material, light, shadowCamera.near, shadowCamera.far, type); + + _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null); + } + } + } + + const children = object.children; + + for (let i = 0, l = children.length; i < l; i++) { + renderObject(children[i], camera, shadowCamera, light, type); + } + } + } + + function WebGLState(gl, extensions, capabilities) { + const isWebGL2 = capabilities.isWebGL2; + + function ColorBuffer() { + let locked = false; + const color = new Vector4(); + let currentColorMask = null; + const currentColorClear = new Vector4(0, 0, 0, 0); + return { + setMask: function (colorMask) { + if (currentColorMask !== colorMask && !locked) { + gl.colorMask(colorMask, colorMask, colorMask, colorMask); + currentColorMask = colorMask; + } + }, + setLocked: function (lock) { + locked = lock; + }, + setClear: function (r, g, b, a, premultipliedAlpha) { + if (premultipliedAlpha === true) { + r *= a; + g *= a; + b *= a; + } + + color.set(r, g, b, a); + + if (currentColorClear.equals(color) === false) { + gl.clearColor(r, g, b, a); + currentColorClear.copy(color); + } + }, + reset: function () { + locked = false; + currentColorMask = null; + currentColorClear.set(-1, 0, 0, 0); // set to invalid state + } + }; + } + + function DepthBuffer() { + let locked = false; + let currentDepthMask = null; + let currentDepthFunc = null; + let currentDepthClear = null; + return { + setTest: function (depthTest) { + if (depthTest) { + enable(gl.DEPTH_TEST); + } else { + disable(gl.DEPTH_TEST); + } + }, + setMask: function (depthMask) { + if (currentDepthMask !== depthMask && !locked) { + gl.depthMask(depthMask); + currentDepthMask = depthMask; + } + }, + setFunc: function (depthFunc) { + if (currentDepthFunc !== depthFunc) { + if (depthFunc) { + switch (depthFunc) { + case NeverDepth: + gl.depthFunc(gl.NEVER); + break; + + case AlwaysDepth: + gl.depthFunc(gl.ALWAYS); + break; + + case LessDepth: + gl.depthFunc(gl.LESS); + break; + + case LessEqualDepth: + gl.depthFunc(gl.LEQUAL); + break; + + case EqualDepth: + gl.depthFunc(gl.EQUAL); + break; + + case GreaterEqualDepth: + gl.depthFunc(gl.GEQUAL); + break; + + case GreaterDepth: + gl.depthFunc(gl.GREATER); + break; + + case NotEqualDepth: + gl.depthFunc(gl.NOTEQUAL); + break; + + default: + gl.depthFunc(gl.LEQUAL); + } + } else { + gl.depthFunc(gl.LEQUAL); + } + + currentDepthFunc = depthFunc; + } + }, + setLocked: function (lock) { + locked = lock; + }, + setClear: function (depth) { + if (currentDepthClear !== depth) { + gl.clearDepth(depth); + currentDepthClear = depth; + } + }, + reset: function () { + locked = false; + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + } + }; + } + + function StencilBuffer() { + let locked = false; + let currentStencilMask = null; + let currentStencilFunc = null; + let currentStencilRef = null; + let currentStencilFuncMask = null; + let currentStencilFail = null; + let currentStencilZFail = null; + let currentStencilZPass = null; + let currentStencilClear = null; + return { + setTest: function (stencilTest) { + if (!locked) { + if (stencilTest) { + enable(gl.STENCIL_TEST); + } else { + disable(gl.STENCIL_TEST); + } + } + }, + setMask: function (stencilMask) { + if (currentStencilMask !== stencilMask && !locked) { + gl.stencilMask(stencilMask); + currentStencilMask = stencilMask; + } + }, + setFunc: function (stencilFunc, stencilRef, stencilMask) { + if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) { + gl.stencilFunc(stencilFunc, stencilRef, stencilMask); + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + } + }, + setOp: function (stencilFail, stencilZFail, stencilZPass) { + if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) { + gl.stencilOp(stencilFail, stencilZFail, stencilZPass); + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + } + }, + setLocked: function (lock) { + locked = lock; + }, + setClear: function (stencil) { + if (currentStencilClear !== stencil) { + gl.clearStencil(stencil); + currentStencilClear = stencil; + } + }, + reset: function () { + locked = false; + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + } + }; + } // + + + const colorBuffer = new ColorBuffer(); + const depthBuffer = new DepthBuffer(); + const stencilBuffer = new StencilBuffer(); + let enabledCapabilities = {}; + let xrFramebuffer = null; + let currentBoundFramebuffers = {}; + let currentProgram = null; + let currentBlendingEnabled = false; + let currentBlending = null; + let currentBlendEquation = null; + let currentBlendSrc = null; + let currentBlendDst = null; + let currentBlendEquationAlpha = null; + let currentBlendSrcAlpha = null; + let currentBlendDstAlpha = null; + let currentPremultipledAlpha = false; + let currentFlipSided = null; + let currentCullFace = null; + let currentLineWidth = null; + let currentPolygonOffsetFactor = null; + let currentPolygonOffsetUnits = null; + const maxTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS); + let lineWidthAvailable = false; + let version = 0; + const glVersion = gl.getParameter(gl.VERSION); + + if (glVersion.indexOf('WebGL') !== -1) { + version = parseFloat(/^WebGL (\d)/.exec(glVersion)[1]); + lineWidthAvailable = version >= 1.0; + } else if (glVersion.indexOf('OpenGL ES') !== -1) { + version = parseFloat(/^OpenGL ES (\d)/.exec(glVersion)[1]); + lineWidthAvailable = version >= 2.0; + } + + let currentTextureSlot = null; + let currentBoundTextures = {}; + const scissorParam = gl.getParameter(gl.SCISSOR_BOX); + const viewportParam = gl.getParameter(gl.VIEWPORT); + const currentScissor = new Vector4().fromArray(scissorParam); + const currentViewport = new Vector4().fromArray(viewportParam); + + function createTexture(type, target, count) { + const data = new Uint8Array(4); // 4 is required to match default unpack alignment of 4. + + const texture = gl.createTexture(); + gl.bindTexture(type, texture); + gl.texParameteri(type, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(type, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + for (let i = 0; i < count; i++) { + gl.texImage2D(target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data); + } + + return texture; + } + + const emptyTextures = {}; + emptyTextures[gl.TEXTURE_2D] = createTexture(gl.TEXTURE_2D, gl.TEXTURE_2D, 1); + emptyTextures[gl.TEXTURE_CUBE_MAP] = createTexture(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6); // init + + colorBuffer.setClear(0, 0, 0, 1); + depthBuffer.setClear(1); + stencilBuffer.setClear(0); + enable(gl.DEPTH_TEST); + depthBuffer.setFunc(LessEqualDepth); + setFlipSided(false); + setCullFace(CullFaceBack); + enable(gl.CULL_FACE); + setBlending(NoBlending); // + + function enable(id) { + if (enabledCapabilities[id] !== true) { + gl.enable(id); + enabledCapabilities[id] = true; + } + } + + function disable(id) { + if (enabledCapabilities[id] !== false) { + gl.disable(id); + enabledCapabilities[id] = false; + } + } + + function bindXRFramebuffer(framebuffer) { + if (framebuffer !== xrFramebuffer) { + gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); + xrFramebuffer = framebuffer; + } + } + + function bindFramebuffer(target, framebuffer) { + if (framebuffer === null && xrFramebuffer !== null) framebuffer = xrFramebuffer; // use active XR framebuffer if available + + if (currentBoundFramebuffers[target] !== framebuffer) { + gl.bindFramebuffer(target, framebuffer); + currentBoundFramebuffers[target] = framebuffer; + + if (isWebGL2) { + // gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER + if (target === gl.DRAW_FRAMEBUFFER) { + currentBoundFramebuffers[gl.FRAMEBUFFER] = framebuffer; + } + + if (target === gl.FRAMEBUFFER) { + currentBoundFramebuffers[gl.DRAW_FRAMEBUFFER] = framebuffer; + } + } + + return true; + } + + return false; + } + + function useProgram(program) { + if (currentProgram !== program) { + gl.useProgram(program); + currentProgram = program; + return true; + } + + return false; + } + + const equationToGL = { + [AddEquation]: gl.FUNC_ADD, + [SubtractEquation]: gl.FUNC_SUBTRACT, + [ReverseSubtractEquation]: gl.FUNC_REVERSE_SUBTRACT + }; + + if (isWebGL2) { + equationToGL[MinEquation] = gl.MIN; + equationToGL[MaxEquation] = gl.MAX; + } else { + const extension = extensions.get('EXT_blend_minmax'); + + if (extension !== null) { + equationToGL[MinEquation] = extension.MIN_EXT; + equationToGL[MaxEquation] = extension.MAX_EXT; + } + } + + const factorToGL = { + [ZeroFactor]: gl.ZERO, + [OneFactor]: gl.ONE, + [SrcColorFactor]: gl.SRC_COLOR, + [SrcAlphaFactor]: gl.SRC_ALPHA, + [SrcAlphaSaturateFactor]: gl.SRC_ALPHA_SATURATE, + [DstColorFactor]: gl.DST_COLOR, + [DstAlphaFactor]: gl.DST_ALPHA, + [OneMinusSrcColorFactor]: gl.ONE_MINUS_SRC_COLOR, + [OneMinusSrcAlphaFactor]: gl.ONE_MINUS_SRC_ALPHA, + [OneMinusDstColorFactor]: gl.ONE_MINUS_DST_COLOR, + [OneMinusDstAlphaFactor]: gl.ONE_MINUS_DST_ALPHA + }; + + function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) { + if (blending === NoBlending) { + if (currentBlendingEnabled === true) { + disable(gl.BLEND); + currentBlendingEnabled = false; + } + + return; + } + + if (currentBlendingEnabled === false) { + enable(gl.BLEND); + currentBlendingEnabled = true; + } + + if (blending !== CustomBlending) { + if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) { + if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) { + gl.blendEquation(gl.FUNC_ADD); + currentBlendEquation = AddEquation; + currentBlendEquationAlpha = AddEquation; + } + + if (premultipliedAlpha) { + switch (blending) { + case NormalBlending: + gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + break; + + case AdditiveBlending: + gl.blendFunc(gl.ONE, gl.ONE); + break; + + case SubtractiveBlending: + gl.blendFuncSeparate(gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA); + break; + + case MultiplyBlending: + gl.blendFuncSeparate(gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA); + break; + + default: + console.error('THREE.WebGLState: Invalid blending: ', blending); + break; + } + } else { + switch (blending) { + case NormalBlending: + gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + break; + + case AdditiveBlending: + gl.blendFunc(gl.SRC_ALPHA, gl.ONE); + break; + + case SubtractiveBlending: + gl.blendFunc(gl.ZERO, gl.ONE_MINUS_SRC_COLOR); + break; + + case MultiplyBlending: + gl.blendFunc(gl.ZERO, gl.SRC_COLOR); + break; + + default: + console.error('THREE.WebGLState: Invalid blending: ', blending); + break; + } + } + + currentBlendSrc = null; + currentBlendDst = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + } + + return; + } // custom blending + + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) { + gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]); + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + } + + if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) { + gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]); + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + } + + currentBlending = blending; + currentPremultipledAlpha = null; + } + + function setMaterial(material, frontFaceCW) { + material.side === DoubleSide ? disable(gl.CULL_FACE) : enable(gl.CULL_FACE); + let flipSided = material.side === BackSide; + if (frontFaceCW) flipSided = !flipSided; + setFlipSided(flipSided); + material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha); + depthBuffer.setFunc(material.depthFunc); + depthBuffer.setTest(material.depthTest); + depthBuffer.setMask(material.depthWrite); + colorBuffer.setMask(material.colorWrite); + const stencilWrite = material.stencilWrite; + stencilBuffer.setTest(stencilWrite); + + if (stencilWrite) { + stencilBuffer.setMask(material.stencilWriteMask); + stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask); + stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass); + } + + setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits); + material.alphaToCoverage === true ? enable(gl.SAMPLE_ALPHA_TO_COVERAGE) : disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + } // + + + function setFlipSided(flipSided) { + if (currentFlipSided !== flipSided) { + if (flipSided) { + gl.frontFace(gl.CW); + } else { + gl.frontFace(gl.CCW); + } + + currentFlipSided = flipSided; + } + } + + function setCullFace(cullFace) { + if (cullFace !== CullFaceNone) { + enable(gl.CULL_FACE); + + if (cullFace !== currentCullFace) { + if (cullFace === CullFaceBack) { + gl.cullFace(gl.BACK); + } else if (cullFace === CullFaceFront) { + gl.cullFace(gl.FRONT); + } else { + gl.cullFace(gl.FRONT_AND_BACK); + } + } + } else { + disable(gl.CULL_FACE); + } + + currentCullFace = cullFace; + } + + function setLineWidth(width) { + if (width !== currentLineWidth) { + if (lineWidthAvailable) gl.lineWidth(width); + currentLineWidth = width; + } + } + + function setPolygonOffset(polygonOffset, factor, units) { + if (polygonOffset) { + enable(gl.POLYGON_OFFSET_FILL); + + if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) { + gl.polygonOffset(factor, units); + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + } + } else { + disable(gl.POLYGON_OFFSET_FILL); + } + } + + function setScissorTest(scissorTest) { + if (scissorTest) { + enable(gl.SCISSOR_TEST); + } else { + disable(gl.SCISSOR_TEST); + } + } // texture + + + function activeTexture(webglSlot) { + if (webglSlot === undefined) webglSlot = gl.TEXTURE0 + maxTextures - 1; + + if (currentTextureSlot !== webglSlot) { + gl.activeTexture(webglSlot); + currentTextureSlot = webglSlot; + } + } + + function bindTexture(webglType, webglTexture) { + if (currentTextureSlot === null) { + activeTexture(); + } + + let boundTexture = currentBoundTextures[currentTextureSlot]; + + if (boundTexture === undefined) { + boundTexture = { + type: undefined, + texture: undefined + }; + currentBoundTextures[currentTextureSlot] = boundTexture; + } + + if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) { + gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]); + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + } + } + + function unbindTexture() { + const boundTexture = currentBoundTextures[currentTextureSlot]; + + if (boundTexture !== undefined && boundTexture.type !== undefined) { + gl.bindTexture(boundTexture.type, null); + boundTexture.type = undefined; + boundTexture.texture = undefined; + } + } + + function compressedTexImage2D() { + try { + gl.compressedTexImage2D.apply(gl, arguments); + } catch (error) { + console.error('THREE.WebGLState:', error); + } + } + + function texImage2D() { + try { + gl.texImage2D.apply(gl, arguments); + } catch (error) { + console.error('THREE.WebGLState:', error); + } + } + + function texImage3D() { + try { + gl.texImage3D.apply(gl, arguments); + } catch (error) { + console.error('THREE.WebGLState:', error); + } + } // + + + function scissor(scissor) { + if (currentScissor.equals(scissor) === false) { + gl.scissor(scissor.x, scissor.y, scissor.z, scissor.w); + currentScissor.copy(scissor); + } + } + + function viewport(viewport) { + if (currentViewport.equals(viewport) === false) { + gl.viewport(viewport.x, viewport.y, viewport.z, viewport.w); + currentViewport.copy(viewport); + } + } // + + + function reset() { + // reset state + gl.disable(gl.BLEND); + gl.disable(gl.CULL_FACE); + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.POLYGON_OFFSET_FILL); + gl.disable(gl.SCISSOR_TEST); + gl.disable(gl.STENCIL_TEST); + gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE); + gl.blendEquation(gl.FUNC_ADD); + gl.blendFunc(gl.ONE, gl.ZERO); + gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO); + gl.colorMask(true, true, true, true); + gl.clearColor(0, 0, 0, 0); + gl.depthMask(true); + gl.depthFunc(gl.LESS); + gl.clearDepth(1); + gl.stencilMask(0xffffffff); + gl.stencilFunc(gl.ALWAYS, 0, 0xffffffff); + gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); + gl.clearStencil(0); + gl.cullFace(gl.BACK); + gl.frontFace(gl.CCW); + gl.polygonOffset(0, 0); + gl.activeTexture(gl.TEXTURE0); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + + if (isWebGL2 === true) { + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null); + gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null); + } + + gl.useProgram(null); + gl.lineWidth(1); + gl.scissor(0, 0, gl.canvas.width, gl.canvas.height); + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); // reset internals + + enabledCapabilities = {}; + currentTextureSlot = null; + currentBoundTextures = {}; + xrFramebuffer = null; + currentBoundFramebuffers = {}; + currentProgram = null; + currentBlendingEnabled = false; + currentBlending = null; + currentBlendEquation = null; + currentBlendSrc = null; + currentBlendDst = null; + currentBlendEquationAlpha = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + currentPremultipledAlpha = false; + currentFlipSided = null; + currentCullFace = null; + currentLineWidth = null; + currentPolygonOffsetFactor = null; + currentPolygonOffsetUnits = null; + currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height); + currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height); + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + } + + return { + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + enable: enable, + disable: disable, + bindFramebuffer: bindFramebuffer, + bindXRFramebuffer: bindXRFramebuffer, + useProgram: useProgram, + setBlending: setBlending, + setMaterial: setMaterial, + setFlipSided: setFlipSided, + setCullFace: setCullFace, + setLineWidth: setLineWidth, + setPolygonOffset: setPolygonOffset, + setScissorTest: setScissorTest, + activeTexture: activeTexture, + bindTexture: bindTexture, + unbindTexture: unbindTexture, + compressedTexImage2D: compressedTexImage2D, + texImage2D: texImage2D, + texImage3D: texImage3D, + scissor: scissor, + viewport: viewport, + reset: reset + }; + } + + function WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) { + const isWebGL2 = capabilities.isWebGL2; + const maxTextures = capabilities.maxTextures; + const maxCubemapSize = capabilities.maxCubemapSize; + const maxTextureSize = capabilities.maxTextureSize; + const maxSamples = capabilities.maxSamples; + + const _videoTextures = new WeakMap(); + + let _canvas; // cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas, + // also OffscreenCanvas.getContext("webgl"), but not OffscreenCanvas.getContext("2d")! + // Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d). + + + let useOffscreenCanvas = false; + + try { + useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' && new OffscreenCanvas(1, 1).getContext('2d') !== null; + } catch (err) {// Ignore any errors + } + + function createCanvas(width, height) { + // Use OffscreenCanvas when available. Specially needed in web workers + return useOffscreenCanvas ? new OffscreenCanvas(width, height) : document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); + } + + function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) { + let scale = 1; // handle case if texture exceeds max size + + if (image.width > maxSize || image.height > maxSize) { + scale = maxSize / Math.max(image.width, image.height); + } // only perform resize if necessary + + + if (scale < 1 || needsPowerOfTwo === true) { + // only perform resize for certain image types + if (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) { + const floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor; + const width = floor(scale * image.width); + const height = floor(scale * image.height); + if (_canvas === undefined) _canvas = createCanvas(width, height); // cube textures can't reuse the same canvas + + const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas; + canvas.width = width; + canvas.height = height; + const context = canvas.getContext('2d'); + context.drawImage(image, 0, 0, width, height); + console.warn('THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').'); + return canvas; + } else { + if ('data' in image) { + console.warn('THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').'); + } + + return image; + } + } + + return image; + } + + function isPowerOfTwo$1(image) { + return isPowerOfTwo(image.width) && isPowerOfTwo(image.height); + } + + function textureNeedsPowerOfTwo(texture) { + if (isWebGL2) return false; + return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + } + + function textureNeedsGenerateMipmaps(texture, supportsMips) { + return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + } + + function generateMipmap(target, texture, width, height, depth = 1) { + _gl.generateMipmap(target); + + const textureProperties = properties.get(texture); + textureProperties.__maxMipLevel = Math.log2(Math.max(width, height, depth)); + } + + function getInternalFormat(internalFormatName, glFormat, glType) { + if (isWebGL2 === false) return glFormat; + + if (internalFormatName !== null) { + if (_gl[internalFormatName] !== undefined) return _gl[internalFormatName]; + console.warn('THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\''); + } + + let internalFormat = glFormat; + + if (glFormat === _gl.RED) { + if (glType === _gl.FLOAT) internalFormat = _gl.R32F; + if (glType === _gl.HALF_FLOAT) internalFormat = _gl.R16F; + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8; + } + + if (glFormat === _gl.RGB) { + if (glType === _gl.FLOAT) internalFormat = _gl.RGB32F; + if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGB16F; + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RGB8; + } + + if (glFormat === _gl.RGBA) { + if (glType === _gl.FLOAT) internalFormat = _gl.RGBA32F; + if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGBA16F; + if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RGBA8; + } + + if (internalFormat === _gl.R16F || internalFormat === _gl.R32F || internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F) { + extensions.get('EXT_color_buffer_float'); + } + + return internalFormat; + } // Fallback filters for non-power-of-2 textures + + + function filterFallback(f) { + if (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) { + return _gl.NEAREST; + } + + return _gl.LINEAR; + } // + + + function onTextureDispose(event) { + const texture = event.target; + texture.removeEventListener('dispose', onTextureDispose); + deallocateTexture(texture); + + if (texture.isVideoTexture) { + _videoTextures.delete(texture); + } + + info.memory.textures--; + } + + function onRenderTargetDispose(event) { + const renderTarget = event.target; + renderTarget.removeEventListener('dispose', onRenderTargetDispose); + deallocateRenderTarget(renderTarget); + } // + + + function deallocateTexture(texture) { + const textureProperties = properties.get(texture); + if (textureProperties.__webglInit === undefined) return; + + _gl.deleteTexture(textureProperties.__webglTexture); + + properties.remove(texture); + } + + function deallocateRenderTarget(renderTarget) { + const texture = renderTarget.texture; + const renderTargetProperties = properties.get(renderTarget); + const textureProperties = properties.get(texture); + if (!renderTarget) return; + + if (textureProperties.__webglTexture !== undefined) { + _gl.deleteTexture(textureProperties.__webglTexture); + + info.memory.textures--; + } + + if (renderTarget.depthTexture) { + renderTarget.depthTexture.dispose(); + } + + if (renderTarget.isWebGLCubeRenderTarget) { + for (let i = 0; i < 6; i++) { + _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]); + + if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]); + } + } else { + _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer); + + if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer); + if (renderTargetProperties.__webglMultisampledFramebuffer) _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer); + if (renderTargetProperties.__webglColorRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer); + if (renderTargetProperties.__webglDepthRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer); + } + + if (renderTarget.isWebGLMultipleRenderTargets) { + for (let i = 0, il = texture.length; i < il; i++) { + const attachmentProperties = properties.get(texture[i]); + + if (attachmentProperties.__webglTexture) { + _gl.deleteTexture(attachmentProperties.__webglTexture); + + info.memory.textures--; + } + + properties.remove(texture[i]); + } + } + + properties.remove(texture); + properties.remove(renderTarget); + } // + + + let textureUnits = 0; + + function resetTextureUnits() { + textureUnits = 0; + } + + function allocateTextureUnit() { + const textureUnit = textureUnits; + + if (textureUnit >= maxTextures) { + console.warn('THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures); + } + + textureUnits += 1; + return textureUnit; + } // + + + function setTexture2D(texture, slot) { + const textureProperties = properties.get(texture); + if (texture.isVideoTexture) updateVideoTexture(texture); + + if (texture.version > 0 && textureProperties.__version !== texture.version) { + const image = texture.image; + + if (image === undefined) { + console.warn('THREE.WebGLRenderer: Texture marked for update but image is undefined'); + } else if (image.complete === false) { + console.warn('THREE.WebGLRenderer: Texture marked for update but image is incomplete'); + } else { + uploadTexture(textureProperties, texture, slot); + return; + } + } + + state.activeTexture(_gl.TEXTURE0 + slot); + state.bindTexture(_gl.TEXTURE_2D, textureProperties.__webglTexture); + } + + function setTexture2DArray(texture, slot) { + const textureProperties = properties.get(texture); + + if (texture.version > 0 && textureProperties.__version !== texture.version) { + uploadTexture(textureProperties, texture, slot); + return; + } + + state.activeTexture(_gl.TEXTURE0 + slot); + state.bindTexture(_gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture); + } + + function setTexture3D(texture, slot) { + const textureProperties = properties.get(texture); + + if (texture.version > 0 && textureProperties.__version !== texture.version) { + uploadTexture(textureProperties, texture, slot); + return; + } + + state.activeTexture(_gl.TEXTURE0 + slot); + state.bindTexture(_gl.TEXTURE_3D, textureProperties.__webglTexture); + } + + function setTextureCube(texture, slot) { + const textureProperties = properties.get(texture); + + if (texture.version > 0 && textureProperties.__version !== texture.version) { + uploadCubeTexture(textureProperties, texture, slot); + return; + } + + state.activeTexture(_gl.TEXTURE0 + slot); + state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture); + } + + const wrappingToGL = { + [RepeatWrapping]: _gl.REPEAT, + [ClampToEdgeWrapping]: _gl.CLAMP_TO_EDGE, + [MirroredRepeatWrapping]: _gl.MIRRORED_REPEAT + }; + const filterToGL = { + [NearestFilter]: _gl.NEAREST, + [NearestMipmapNearestFilter]: _gl.NEAREST_MIPMAP_NEAREST, + [NearestMipmapLinearFilter]: _gl.NEAREST_MIPMAP_LINEAR, + [LinearFilter]: _gl.LINEAR, + [LinearMipmapNearestFilter]: _gl.LINEAR_MIPMAP_NEAREST, + [LinearMipmapLinearFilter]: _gl.LINEAR_MIPMAP_LINEAR + }; + + function setTextureParameters(textureType, texture, supportsMips) { + if (supportsMips) { + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[texture.wrapS]); + + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[texture.wrapT]); + + if (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) { + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[texture.wrapR]); + } + + _gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[texture.magFilter]); + + _gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[texture.minFilter]); + } else { + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE); + + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE); + + if (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) { + _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE); + } + + if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) { + console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.'); + } + + _gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterFallback(texture.magFilter)); + + _gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterFallback(texture.minFilter)); + + if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) { + console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.'); + } + } + + if (extensions.has('EXT_texture_filter_anisotropic') === true) { + const extension = extensions.get('EXT_texture_filter_anisotropic'); + if (texture.type === FloatType && extensions.has('OES_texture_float_linear') === false) return; // verify extension for WebGL 1 and WebGL 2 + + if (isWebGL2 === false && texture.type === HalfFloatType && extensions.has('OES_texture_half_float_linear') === false) return; // verify extension for WebGL 1 only + + if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) { + _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy())); + + properties.get(texture).__currentAnisotropy = texture.anisotropy; + } + } + } + + function initTexture(textureProperties, texture) { + if (textureProperties.__webglInit === undefined) { + textureProperties.__webglInit = true; + texture.addEventListener('dispose', onTextureDispose); + textureProperties.__webglTexture = _gl.createTexture(); + info.memory.textures++; + } + } + + function uploadTexture(textureProperties, texture, slot) { + let textureType = _gl.TEXTURE_2D; + if (texture.isDataTexture2DArray) textureType = _gl.TEXTURE_2D_ARRAY; + if (texture.isDataTexture3D) textureType = _gl.TEXTURE_3D; + initTexture(textureProperties, texture); + state.activeTexture(_gl.TEXTURE0 + slot); + state.bindTexture(textureType, textureProperties.__webglTexture); + + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY); + + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha); + + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment); + + _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, _gl.NONE); + + const needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false; + const image = resizeImage(texture.image, needsPowerOfTwo, false, maxTextureSize); + const supportsMips = isPowerOfTwo$1(image) || isWebGL2, + glFormat = utils.convert(texture.format); + let glType = utils.convert(texture.type), + glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType); + setTextureParameters(textureType, texture, supportsMips); + let mipmap; + const mipmaps = texture.mipmaps; + + if (texture.isDepthTexture) { + // populate depth texture with dummy data + glInternalFormat = _gl.DEPTH_COMPONENT; + + if (isWebGL2) { + if (texture.type === FloatType) { + glInternalFormat = _gl.DEPTH_COMPONENT32F; + } else if (texture.type === UnsignedIntType) { + glInternalFormat = _gl.DEPTH_COMPONENT24; + } else if (texture.type === UnsignedInt248Type) { + glInternalFormat = _gl.DEPTH24_STENCIL8; + } else { + glInternalFormat = _gl.DEPTH_COMPONENT16; // WebGL2 requires sized internalformat for glTexImage2D + } + } else { + if (texture.type === FloatType) { + console.error('WebGLRenderer: Floating point depth texture requires WebGL2.'); + } + } // validation checks for WebGL 1 + + + if (texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT) { + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) { + console.warn('THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.'); + texture.type = UnsignedShortType; + glType = utils.convert(texture.type); + } + } + + if (texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT) { + // Depth stencil textures need the DEPTH_STENCIL internal format + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + glInternalFormat = _gl.DEPTH_STENCIL; // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + + if (texture.type !== UnsignedInt248Type) { + console.warn('THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.'); + texture.type = UnsignedInt248Type; + glType = utils.convert(texture.type); + } + } // + + + state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null); + } else if (texture.isDataTexture) { + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + if (mipmaps.length > 0 && supportsMips) { + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + } else { + state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data); + textureProperties.__maxMipLevel = 0; + } + } else if (texture.isCompressedTexture) { + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + + if (texture.format !== RGBAFormat && texture.format !== RGBFormat) { + if (glFormat !== null) { + state.compressedTexImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data); + } else { + console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()'); + } + } else { + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); + } + } + + textureProperties.__maxMipLevel = mipmaps.length - 1; + } else if (texture.isDataTexture2DArray) { + state.texImage3D(_gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data); + textureProperties.__maxMipLevel = 0; + } else if (texture.isDataTexture3D) { + state.texImage3D(_gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data); + textureProperties.__maxMipLevel = 0; + } else { + // regular Texture (image, video, canvas) + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + if (mipmaps.length > 0 && supportsMips) { + for (let i = 0, il = mipmaps.length; i < il; i++) { + mipmap = mipmaps[i]; + state.texImage2D(_gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap); + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + } else { + state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image); + textureProperties.__maxMipLevel = 0; + } + } + + if (textureNeedsGenerateMipmaps(texture, supportsMips)) { + generateMipmap(textureType, texture, image.width, image.height); + } + + textureProperties.__version = texture.version; + if (texture.onUpdate) texture.onUpdate(texture); + } + + function uploadCubeTexture(textureProperties, texture, slot) { + if (texture.image.length !== 6) return; + initTexture(textureProperties, texture); + state.activeTexture(_gl.TEXTURE0 + slot); + state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture); + + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY); + + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha); + + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment); + + _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, _gl.NONE); + + const isCompressed = texture && (texture.isCompressedTexture || texture.image[0].isCompressedTexture); + const isDataTexture = texture.image[0] && texture.image[0].isDataTexture; + const cubeImage = []; + + for (let i = 0; i < 6; i++) { + if (!isCompressed && !isDataTexture) { + cubeImage[i] = resizeImage(texture.image[i], false, true, maxCubemapSize); + } else { + cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i]; + } + } + + const image = cubeImage[0], + supportsMips = isPowerOfTwo$1(image) || isWebGL2, + glFormat = utils.convert(texture.format), + glType = utils.convert(texture.type), + glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType); + setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture, supportsMips); + let mipmaps; + + if (isCompressed) { + for (let i = 0; i < 6; i++) { + mipmaps = cubeImage[i].mipmaps; + + for (let j = 0; j < mipmaps.length; j++) { + const mipmap = mipmaps[j]; + + if (texture.format !== RGBAFormat && texture.format !== RGBFormat) { + if (glFormat !== null) { + state.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data); + } else { + console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()'); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data); + } + } + } + + textureProperties.__maxMipLevel = mipmaps.length - 1; + } else { + mipmaps = texture.mipmaps; + + for (let i = 0; i < 6; i++) { + if (isDataTexture) { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data); + + for (let j = 0; j < mipmaps.length; j++) { + const mipmap = mipmaps[j]; + const mipmapImage = mipmap.image[i].image; + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data); + } + } else { + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]); + + for (let j = 0; j < mipmaps.length; j++) { + const mipmap = mipmaps[j]; + state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]); + } + } + } + + textureProperties.__maxMipLevel = mipmaps.length; + } + + if (textureNeedsGenerateMipmaps(texture, supportsMips)) { + // We assume images for cube map have the same size. + generateMipmap(_gl.TEXTURE_CUBE_MAP, texture, image.width, image.height); + } + + textureProperties.__version = texture.version; + if (texture.onUpdate) texture.onUpdate(texture); + } // Render targets + // Setup storage for target texture and bind it to correct framebuffer + + + function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget) { + const glFormat = utils.convert(texture.format); + const glType = utils.convert(texture.type); + const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType); + + if (textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY) { + state.texImage3D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null); + } else { + state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null); + } + + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, 0); + + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + } // Setup storage for internal depth/stencil buffers and bind to correct framebuffer + + + function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) { + _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer); + + if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) { + let glInternalFormat = _gl.DEPTH_COMPONENT16; + + if (isMultisample) { + const depthTexture = renderTarget.depthTexture; + + if (depthTexture && depthTexture.isDepthTexture) { + if (depthTexture.type === FloatType) { + glInternalFormat = _gl.DEPTH_COMPONENT32F; + } else if (depthTexture.type === UnsignedIntType) { + glInternalFormat = _gl.DEPTH_COMPONENT24; + } + } + + const samples = getRenderTargetSamples(renderTarget); + + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + } else { + _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height); + } + + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer); + } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) { + if (isMultisample) { + const samples = getRenderTargetSamples(renderTarget); + + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height); + } else { + _gl.renderbufferStorage(_gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height); + } + + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer); + } else { + // Use the first texture for MRT so far + const texture = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture[0] : renderTarget.texture; + const glFormat = utils.convert(texture.format); + const glType = utils.convert(texture.type); + const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType); + + if (isMultisample) { + const samples = getRenderTargetSamples(renderTarget); + + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + } else { + _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height); + } + } + + _gl.bindRenderbuffer(_gl.RENDERBUFFER, null); + } // Setup resources for a Depth Texture for a FBO (needs an extension) + + + function setupDepthTexture(framebuffer, renderTarget) { + const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget; + if (isCube) throw new Error('Depth Texture with cube render targets is not supported'); + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + + if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) { + throw new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture'); + } // upload an empty depth texture with framebuffer size + + + if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) { + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + } + + setTexture2D(renderTarget.depthTexture, 0); + + const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture; + + if (renderTarget.depthTexture.format === DepthFormat) { + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0); + } else if (renderTarget.depthTexture.format === DepthStencilFormat) { + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0); + } else { + throw new Error('Unknown depthTexture format'); + } + } // Setup GL resources for a non-texture depth buffer + + + function setupDepthRenderbuffer(renderTarget) { + const renderTargetProperties = properties.get(renderTarget); + const isCube = renderTarget.isWebGLCubeRenderTarget === true; + + if (renderTarget.depthTexture) { + if (isCube) throw new Error('target.depthTexture not supported in Cube render targets'); + setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget); + } else { + if (isCube) { + renderTargetProperties.__webglDepthbuffer = []; + + for (let i = 0; i < 6; i++) { + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[i]); + renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false); + } + } else { + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer); + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false); + } + } + + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + } // Set up GL resources for the render target + + + function setupRenderTarget(renderTarget) { + const texture = renderTarget.texture; + const renderTargetProperties = properties.get(renderTarget); + const textureProperties = properties.get(texture); + renderTarget.addEventListener('dispose', onRenderTargetDispose); + + if (renderTarget.isWebGLMultipleRenderTargets !== true) { + textureProperties.__webglTexture = _gl.createTexture(); + textureProperties.__version = texture.version; + info.memory.textures++; + } + + const isCube = renderTarget.isWebGLCubeRenderTarget === true; + const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true; + const isMultisample = renderTarget.isWebGLMultisampleRenderTarget === true; + const isRenderTarget3D = texture.isDataTexture3D || texture.isDataTexture2DArray; + const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2; // Handles WebGL2 RGBFormat fallback - #18858 + + if (isWebGL2 && texture.format === RGBFormat && (texture.type === FloatType || texture.type === HalfFloatType)) { + texture.format = RGBAFormat; + console.warn('THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.'); + } // Setup framebuffer + + + if (isCube) { + renderTargetProperties.__webglFramebuffer = []; + + for (let i = 0; i < 6; i++) { + renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer(); + } + } else { + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + + if (isMultipleRenderTargets) { + if (capabilities.drawBuffers) { + const textures = renderTarget.texture; + + for (let i = 0, il = textures.length; i < il; i++) { + const attachmentProperties = properties.get(textures[i]); + + if (attachmentProperties.__webglTexture === undefined) { + attachmentProperties.__webglTexture = _gl.createTexture(); + info.memory.textures++; + } + } + } else { + console.warn('THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.'); + } + } else if (isMultisample) { + if (isWebGL2) { + renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); + renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer(); + + _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer); + + const glFormat = utils.convert(texture.format); + const glType = utils.convert(texture.type); + const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType); + const samples = getRenderTargetSamples(renderTarget); + + _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height); + + state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + + _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer); + + _gl.bindRenderbuffer(_gl.RENDERBUFFER, null); + + if (renderTarget.depthBuffer) { + renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true); + } + + state.bindFramebuffer(_gl.FRAMEBUFFER, null); + } else { + console.warn('THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.'); + } + } + } // Setup color buffer + + + if (isCube) { + state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture); + setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture, supportsMips); + + for (let i = 0; i < 6; i++) { + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i); + } + + if (textureNeedsGenerateMipmaps(texture, supportsMips)) { + generateMipmap(_gl.TEXTURE_CUBE_MAP, texture, renderTarget.width, renderTarget.height); + } + + state.unbindTexture(); + } else if (isMultipleRenderTargets) { + const textures = renderTarget.texture; + + for (let i = 0, il = textures.length; i < il; i++) { + const attachment = textures[i]; + const attachmentProperties = properties.get(attachment); + state.bindTexture(_gl.TEXTURE_2D, attachmentProperties.__webglTexture); + setTextureParameters(_gl.TEXTURE_2D, attachment, supportsMips); + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D); + + if (textureNeedsGenerateMipmaps(attachment, supportsMips)) { + generateMipmap(_gl.TEXTURE_2D, attachment, renderTarget.width, renderTarget.height); + } + } + + state.unbindTexture(); + } else { + let glTextureType = _gl.TEXTURE_2D; + + if (isRenderTarget3D) { + // Render targets containing layers, i.e: Texture 3D and 2d arrays + if (isWebGL2) { + const isTexture3D = texture.isDataTexture3D; + glTextureType = isTexture3D ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY; + } else { + console.warn('THREE.DataTexture3D and THREE.DataTexture2DArray only supported with WebGL2.'); + } + } + + state.bindTexture(glTextureType, textureProperties.__webglTexture); + setTextureParameters(glTextureType, texture, supportsMips); + setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType); + + if (textureNeedsGenerateMipmaps(texture, supportsMips)) { + generateMipmap(glTextureType, texture, renderTarget.width, renderTarget.height, renderTarget.depth); + } + + state.unbindTexture(); + } // Setup depth and stencil buffers + + + if (renderTarget.depthBuffer) { + setupDepthRenderbuffer(renderTarget); + } + } + + function updateRenderTargetMipmap(renderTarget) { + const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2; + const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture]; + + for (let i = 0, il = textures.length; i < il; i++) { + const texture = textures[i]; + + if (textureNeedsGenerateMipmaps(texture, supportsMips)) { + const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D; + + const webglTexture = properties.get(texture).__webglTexture; + + state.bindTexture(target, webglTexture); + generateMipmap(target, texture, renderTarget.width, renderTarget.height); + state.unbindTexture(); + } + } + } + + function updateMultisampleRenderTarget(renderTarget) { + if (renderTarget.isWebGLMultisampleRenderTarget) { + if (isWebGL2) { + const width = renderTarget.width; + const height = renderTarget.height; + let mask = _gl.COLOR_BUFFER_BIT; + if (renderTarget.depthBuffer) mask |= _gl.DEPTH_BUFFER_BIT; + if (renderTarget.stencilBuffer) mask |= _gl.STENCIL_BUFFER_BIT; + const renderTargetProperties = properties.get(renderTarget); + state.bindFramebuffer(_gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer); + + _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST); + + state.bindFramebuffer(_gl.READ_FRAMEBUFFER, null); + state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer); + } else { + console.warn('THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.'); + } + } + } + + function getRenderTargetSamples(renderTarget) { + return isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ? Math.min(maxSamples, renderTarget.samples) : 0; + } + + function updateVideoTexture(texture) { + const frame = info.render.frame; // Check the last frame we updated the VideoTexture + + if (_videoTextures.get(texture) !== frame) { + _videoTextures.set(texture, frame); + + texture.update(); + } + } // backwards compatibility + + + let warnedTexture2D = false; + let warnedTextureCube = false; + + function safeSetTexture2D(texture, slot) { + if (texture && texture.isWebGLRenderTarget) { + if (warnedTexture2D === false) { + console.warn('THREE.WebGLTextures.safeSetTexture2D: don\'t use render targets as textures. Use their .texture property instead.'); + warnedTexture2D = true; + } + + texture = texture.texture; + } + + setTexture2D(texture, slot); + } + + function safeSetTextureCube(texture, slot) { + if (texture && texture.isWebGLCubeRenderTarget) { + if (warnedTextureCube === false) { + console.warn('THREE.WebGLTextures.safeSetTextureCube: don\'t use cube render targets as textures. Use their .texture property instead.'); + warnedTextureCube = true; + } + + texture = texture.texture; + } + + setTextureCube(texture, slot); + } // + + + this.allocateTextureUnit = allocateTextureUnit; + this.resetTextureUnits = resetTextureUnits; + this.setTexture2D = setTexture2D; + this.setTexture2DArray = setTexture2DArray; + this.setTexture3D = setTexture3D; + this.setTextureCube = setTextureCube; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; + this.safeSetTexture2D = safeSetTexture2D; + this.safeSetTextureCube = safeSetTextureCube; + } + + function WebGLUtils(gl, extensions, capabilities) { + const isWebGL2 = capabilities.isWebGL2; + + function convert(p) { + let extension; + if (p === UnsignedByteType) return gl.UNSIGNED_BYTE; + if (p === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4; + if (p === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1; + if (p === UnsignedShort565Type) return gl.UNSIGNED_SHORT_5_6_5; + if (p === ByteType) return gl.BYTE; + if (p === ShortType) return gl.SHORT; + if (p === UnsignedShortType) return gl.UNSIGNED_SHORT; + if (p === IntType) return gl.INT; + if (p === UnsignedIntType) return gl.UNSIGNED_INT; + if (p === FloatType) return gl.FLOAT; + + if (p === HalfFloatType) { + if (isWebGL2) return gl.HALF_FLOAT; + extension = extensions.get('OES_texture_half_float'); + + if (extension !== null) { + return extension.HALF_FLOAT_OES; + } else { + return null; + } + } + + if (p === AlphaFormat) return gl.ALPHA; + if (p === RGBFormat) return gl.RGB; + if (p === RGBAFormat) return gl.RGBA; + if (p === LuminanceFormat) return gl.LUMINANCE; + if (p === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA; + if (p === DepthFormat) return gl.DEPTH_COMPONENT; + if (p === DepthStencilFormat) return gl.DEPTH_STENCIL; + if (p === RedFormat) return gl.RED; // WebGL2 formats. + + if (p === RedIntegerFormat) return gl.RED_INTEGER; + if (p === RGFormat) return gl.RG; + if (p === RGIntegerFormat) return gl.RG_INTEGER; + if (p === RGBIntegerFormat) return gl.RGB_INTEGER; + if (p === RGBAIntegerFormat) return gl.RGBA_INTEGER; + + if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) { + extension = extensions.get('WEBGL_compressed_texture_s3tc'); + + if (extension !== null) { + if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + } else { + return null; + } + } + + if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) { + extension = extensions.get('WEBGL_compressed_texture_pvrtc'); + + if (extension !== null) { + if (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + } else { + return null; + } + } + + if (p === RGB_ETC1_Format) { + extension = extensions.get('WEBGL_compressed_texture_etc1'); + + if (extension !== null) { + return extension.COMPRESSED_RGB_ETC1_WEBGL; + } else { + return null; + } + } + + if (p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format) { + extension = extensions.get('WEBGL_compressed_texture_etc'); + + if (extension !== null) { + if (p === RGB_ETC2_Format) return extension.COMPRESSED_RGB8_ETC2; + if (p === RGBA_ETC2_EAC_Format) return extension.COMPRESSED_RGBA8_ETC2_EAC; + } + } + + if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format || p === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format || p === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format || p === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format || p === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format || p === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format) { + extension = extensions.get('WEBGL_compressed_texture_astc'); + + if (extension !== null) { + // TODO Complete? + return p; + } else { + return null; + } + } + + if (p === RGBA_BPTC_Format) { + extension = extensions.get('EXT_texture_compression_bptc'); + + if (extension !== null) { + // TODO Complete? + return p; + } else { + return null; + } + } + + if (p === UnsignedInt248Type) { + if (isWebGL2) return gl.UNSIGNED_INT_24_8; + extension = extensions.get('WEBGL_depth_texture'); + + if (extension !== null) { + return extension.UNSIGNED_INT_24_8_WEBGL; + } else { + return null; + } + } + } + + return { + convert: convert + }; + } + + class ArrayCamera extends PerspectiveCamera { + constructor(array = []) { + super(); + this.cameras = array; + } + + } + + ArrayCamera.prototype.isArrayCamera = true; + + class Group extends Object3D { + constructor() { + super(); + this.type = 'Group'; + } + + } + + Group.prototype.isGroup = true; + + const _moveEvent = { + type: 'move' + }; + + class WebXRController { + constructor() { + this._targetRay = null; + this._grip = null; + this._hand = null; + } + + getHandSpace() { + if (this._hand === null) { + this._hand = new Group(); + this._hand.matrixAutoUpdate = false; + this._hand.visible = false; + this._hand.joints = {}; + this._hand.inputState = { + pinching: false + }; + } + + return this._hand; + } + + getTargetRaySpace() { + if (this._targetRay === null) { + this._targetRay = new Group(); + this._targetRay.matrixAutoUpdate = false; + this._targetRay.visible = false; + this._targetRay.hasLinearVelocity = false; + this._targetRay.linearVelocity = new Vector3(); + this._targetRay.hasAngularVelocity = false; + this._targetRay.angularVelocity = new Vector3(); + } + + return this._targetRay; + } + + getGripSpace() { + if (this._grip === null) { + this._grip = new Group(); + this._grip.matrixAutoUpdate = false; + this._grip.visible = false; + this._grip.hasLinearVelocity = false; + this._grip.linearVelocity = new Vector3(); + this._grip.hasAngularVelocity = false; + this._grip.angularVelocity = new Vector3(); + } + + return this._grip; + } + + dispatchEvent(event) { + if (this._targetRay !== null) { + this._targetRay.dispatchEvent(event); + } + + if (this._grip !== null) { + this._grip.dispatchEvent(event); + } + + if (this._hand !== null) { + this._hand.dispatchEvent(event); + } + + return this; + } + + disconnect(inputSource) { + this.dispatchEvent({ + type: 'disconnected', + data: inputSource + }); + + if (this._targetRay !== null) { + this._targetRay.visible = false; + } + + if (this._grip !== null) { + this._grip.visible = false; + } + + if (this._hand !== null) { + this._hand.visible = false; + } + + return this; + } + + update(inputSource, frame, referenceSpace) { + let inputPose = null; + let gripPose = null; + let handPose = null; + const targetRay = this._targetRay; + const grip = this._grip; + const hand = this._hand; + + if (inputSource && frame.session.visibilityState !== 'visible-blurred') { + if (targetRay !== null) { + inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace); + + if (inputPose !== null) { + targetRay.matrix.fromArray(inputPose.transform.matrix); + targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale); + + if (inputPose.linearVelocity) { + targetRay.hasLinearVelocity = true; + targetRay.linearVelocity.copy(inputPose.linearVelocity); + } else { + targetRay.hasLinearVelocity = false; + } + + if (inputPose.angularVelocity) { + targetRay.hasAngularVelocity = true; + targetRay.angularVelocity.copy(inputPose.angularVelocity); + } else { + targetRay.hasAngularVelocity = false; + } + + this.dispatchEvent(_moveEvent); + } + } + + if (hand && inputSource.hand) { + handPose = true; + + for (const inputjoint of inputSource.hand.values()) { + // Update the joints groups with the XRJoint poses + const jointPose = frame.getJointPose(inputjoint, referenceSpace); + + if (hand.joints[inputjoint.jointName] === undefined) { + // The transform of this joint will be updated with the joint pose on each frame + const joint = new Group(); + joint.matrixAutoUpdate = false; + joint.visible = false; + hand.joints[inputjoint.jointName] = joint; // ?? + + hand.add(joint); + } + + const joint = hand.joints[inputjoint.jointName]; + + if (jointPose !== null) { + joint.matrix.fromArray(jointPose.transform.matrix); + joint.matrix.decompose(joint.position, joint.rotation, joint.scale); + joint.jointRadius = jointPose.radius; + } + + joint.visible = jointPose !== null; + } // Custom events + // Check pinchz + + + const indexTip = hand.joints['index-finger-tip']; + const thumbTip = hand.joints['thumb-tip']; + const distance = indexTip.position.distanceTo(thumbTip.position); + const distanceToPinch = 0.02; + const threshold = 0.005; + + if (hand.inputState.pinching && distance > distanceToPinch + threshold) { + hand.inputState.pinching = false; + this.dispatchEvent({ + type: 'pinchend', + handedness: inputSource.handedness, + target: this + }); + } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) { + hand.inputState.pinching = true; + this.dispatchEvent({ + type: 'pinchstart', + handedness: inputSource.handedness, + target: this + }); + } + } else { + if (grip !== null && inputSource.gripSpace) { + gripPose = frame.getPose(inputSource.gripSpace, referenceSpace); + + if (gripPose !== null) { + grip.matrix.fromArray(gripPose.transform.matrix); + grip.matrix.decompose(grip.position, grip.rotation, grip.scale); + + if (gripPose.linearVelocity) { + grip.hasLinearVelocity = true; + grip.linearVelocity.copy(gripPose.linearVelocity); + } else { + grip.hasLinearVelocity = false; + } + + if (gripPose.angularVelocity) { + grip.hasAngularVelocity = true; + grip.angularVelocity.copy(gripPose.angularVelocity); + } else { + grip.hasAngularVelocity = false; + } + } + } + } + } + + if (targetRay !== null) { + targetRay.visible = inputPose !== null; + } + + if (grip !== null) { + grip.visible = gripPose !== null; + } + + if (hand !== null) { + hand.visible = handPose !== null; + } + + return this; + } + + } + + class WebXRManager extends EventDispatcher { + constructor(renderer, gl) { + super(); + const scope = this; + const state = renderer.state; + let session = null; + let framebufferScaleFactor = 1.0; + let referenceSpace = null; + let referenceSpaceType = 'local-floor'; + let pose = null; + let glBinding = null; + let glFramebuffer = null; + let glProjLayer = null; + let glBaseLayer = null; + let isMultisample = false; + let glMultisampledFramebuffer = null; + let glColorRenderbuffer = null; + let glDepthRenderbuffer = null; + let xrFrame = null; + let depthStyle = null; + let clearStyle = null; + const controllers = []; + const inputSourcesMap = new Map(); // + + const cameraL = new PerspectiveCamera(); + cameraL.layers.enable(1); + cameraL.viewport = new Vector4(); + const cameraR = new PerspectiveCamera(); + cameraR.layers.enable(2); + cameraR.viewport = new Vector4(); + const cameras = [cameraL, cameraR]; + const cameraVR = new ArrayCamera(); + cameraVR.layers.enable(1); + cameraVR.layers.enable(2); + let _currentDepthNear = null; + let _currentDepthFar = null; // + + this.cameraAutoUpdate = true; + this.enabled = false; + this.isPresenting = false; + + this.getController = function (index) { + let controller = controllers[index]; + + if (controller === undefined) { + controller = new WebXRController(); + controllers[index] = controller; + } + + return controller.getTargetRaySpace(); + }; + + this.getControllerGrip = function (index) { + let controller = controllers[index]; + + if (controller === undefined) { + controller = new WebXRController(); + controllers[index] = controller; + } + + return controller.getGripSpace(); + }; + + this.getHand = function (index) { + let controller = controllers[index]; + + if (controller === undefined) { + controller = new WebXRController(); + controllers[index] = controller; + } + + return controller.getHandSpace(); + }; // + + + function onSessionEvent(event) { + const controller = inputSourcesMap.get(event.inputSource); + + if (controller) { + controller.dispatchEvent({ + type: event.type, + data: event.inputSource + }); + } + } + + function onSessionEnd() { + inputSourcesMap.forEach(function (controller, inputSource) { + controller.disconnect(inputSource); + }); + inputSourcesMap.clear(); + _currentDepthNear = null; + _currentDepthFar = null; // restore framebuffer/rendering state + + state.bindXRFramebuffer(null); + renderer.setRenderTarget(renderer.getRenderTarget()); + if (glFramebuffer) gl.deleteFramebuffer(glFramebuffer); + if (glMultisampledFramebuffer) gl.deleteFramebuffer(glMultisampledFramebuffer); + if (glColorRenderbuffer) gl.deleteRenderbuffer(glColorRenderbuffer); + if (glDepthRenderbuffer) gl.deleteRenderbuffer(glDepthRenderbuffer); + glFramebuffer = null; + glMultisampledFramebuffer = null; + glColorRenderbuffer = null; + glDepthRenderbuffer = null; + glBaseLayer = null; + glProjLayer = null; + glBinding = null; + session = null; // + + animation.stop(); + scope.isPresenting = false; + scope.dispatchEvent({ + type: 'sessionend' + }); + } + + this.setFramebufferScaleFactor = function (value) { + framebufferScaleFactor = value; + + if (scope.isPresenting === true) { + console.warn('THREE.WebXRManager: Cannot change framebuffer scale while presenting.'); + } + }; + + this.setReferenceSpaceType = function (value) { + referenceSpaceType = value; + + if (scope.isPresenting === true) { + console.warn('THREE.WebXRManager: Cannot change reference space type while presenting.'); + } + }; + + this.getReferenceSpace = function () { + return referenceSpace; + }; + + this.getBaseLayer = function () { + return glProjLayer !== null ? glProjLayer : glBaseLayer; + }; + + this.getBinding = function () { + return glBinding; + }; + + this.getFrame = function () { + return xrFrame; + }; + + this.getSession = function () { + return session; + }; + + this.setSession = async function (value) { + session = value; + + if (session !== null) { + session.addEventListener('select', onSessionEvent); + session.addEventListener('selectstart', onSessionEvent); + session.addEventListener('selectend', onSessionEvent); + session.addEventListener('squeeze', onSessionEvent); + session.addEventListener('squeezestart', onSessionEvent); + session.addEventListener('squeezeend', onSessionEvent); + session.addEventListener('end', onSessionEnd); + session.addEventListener('inputsourceschange', onInputSourcesChange); + const attributes = gl.getContextAttributes(); + + if (attributes.xrCompatible !== true) { + await gl.makeXRCompatible(); + } + + if (session.renderState.layers === undefined) { + const layerInit = { + antialias: attributes.antialias, + alpha: attributes.alpha, + depth: attributes.depth, + stencil: attributes.stencil, + framebufferScaleFactor: framebufferScaleFactor + }; + glBaseLayer = new XRWebGLLayer(session, gl, layerInit); + session.updateRenderState({ + baseLayer: glBaseLayer + }); + } else if (gl instanceof WebGLRenderingContext) { + // Use old style webgl layer because we can't use MSAA + // WebGL2 support. + const layerInit = { + antialias: true, + alpha: attributes.alpha, + depth: attributes.depth, + stencil: attributes.stencil, + framebufferScaleFactor: framebufferScaleFactor + }; + glBaseLayer = new XRWebGLLayer(session, gl, layerInit); + session.updateRenderState({ + layers: [glBaseLayer] + }); + } else { + isMultisample = attributes.antialias; + let depthFormat = null; + + if (attributes.depth) { + clearStyle = gl.DEPTH_BUFFER_BIT; + if (attributes.stencil) clearStyle |= gl.STENCIL_BUFFER_BIT; + depthStyle = attributes.stencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT; + depthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24; + } + + const projectionlayerInit = { + colorFormat: attributes.alpha ? gl.RGBA8 : gl.RGB8, + depthFormat: depthFormat, + scaleFactor: framebufferScaleFactor + }; + glBinding = new XRWebGLBinding(session, gl); + glProjLayer = glBinding.createProjectionLayer(projectionlayerInit); + glFramebuffer = gl.createFramebuffer(); + session.updateRenderState({ + layers: [glProjLayer] + }); + + if (isMultisample) { + glMultisampledFramebuffer = gl.createFramebuffer(); + glColorRenderbuffer = gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, glColorRenderbuffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 4, gl.RGBA8, glProjLayer.textureWidth, glProjLayer.textureHeight); + state.bindFramebuffer(gl.FRAMEBUFFER, glMultisampledFramebuffer); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, glColorRenderbuffer); + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + + if (depthFormat !== null) { + glDepthRenderbuffer = gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, glDepthRenderbuffer); + gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 4, depthFormat, glProjLayer.textureWidth, glProjLayer.textureHeight); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, depthStyle, gl.RENDERBUFFER, glDepthRenderbuffer); + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + } + + state.bindFramebuffer(gl.FRAMEBUFFER, null); + } + } + + referenceSpace = await session.requestReferenceSpace(referenceSpaceType); + animation.setContext(session); + animation.start(); + scope.isPresenting = true; + scope.dispatchEvent({ + type: 'sessionstart' + }); + } + }; + + function onInputSourcesChange(event) { + const inputSources = session.inputSources; // Assign inputSources to available controllers + + for (let i = 0; i < controllers.length; i++) { + inputSourcesMap.set(inputSources[i], controllers[i]); + } // Notify disconnected + + + for (let i = 0; i < event.removed.length; i++) { + const inputSource = event.removed[i]; + const controller = inputSourcesMap.get(inputSource); + + if (controller) { + controller.dispatchEvent({ + type: 'disconnected', + data: inputSource + }); + inputSourcesMap.delete(inputSource); + } + } // Notify connected + + + for (let i = 0; i < event.added.length; i++) { + const inputSource = event.added[i]; + const controller = inputSourcesMap.get(inputSource); + + if (controller) { + controller.dispatchEvent({ + type: 'connected', + data: inputSource + }); + } + } + } // + + + const cameraLPos = new Vector3(); + const cameraRPos = new Vector3(); + /** + * Assumes 2 cameras that are parallel and share an X-axis, and that + * the cameras' projection and world matrices have already been set. + * And that near and far planes are identical for both cameras. + * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 + */ + + function setProjectionFromUnion(camera, cameraL, cameraR) { + cameraLPos.setFromMatrixPosition(cameraL.matrixWorld); + cameraRPos.setFromMatrixPosition(cameraR.matrixWorld); + const ipd = cameraLPos.distanceTo(cameraRPos); + const projL = cameraL.projectionMatrix.elements; + const projR = cameraR.projectionMatrix.elements; // VR systems will have identical far and near planes, and + // most likely identical top and bottom frustum extents. + // Use the left camera for these values. + + const near = projL[14] / (projL[10] - 1); + const far = projL[14] / (projL[10] + 1); + const topFov = (projL[9] + 1) / projL[5]; + const bottomFov = (projL[9] - 1) / projL[5]; + const leftFov = (projL[8] - 1) / projL[0]; + const rightFov = (projR[8] + 1) / projR[0]; + const left = near * leftFov; + const right = near * rightFov; // Calculate the new camera's position offset from the + // left camera. xOffset should be roughly half `ipd`. + + const zOffset = ipd / (-leftFov + rightFov); + const xOffset = zOffset * -leftFov; // TODO: Better way to apply this offset? + + cameraL.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale); + camera.translateX(xOffset); + camera.translateZ(zOffset); + camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale); + camera.matrixWorldInverse.copy(camera.matrixWorld).invert(); // Find the union of the frustum values of the cameras and scale + // the values so that the near plane's position does not change in world space, + // although must now be relative to the new union camera. + + const near2 = near + zOffset; + const far2 = far + zOffset; + const left2 = left - xOffset; + const right2 = right + (ipd - xOffset); + const top2 = topFov * far / far2 * near2; + const bottom2 = bottomFov * far / far2 * near2; + camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2); + } + + function updateCamera(camera, parent) { + if (parent === null) { + camera.matrixWorld.copy(camera.matrix); + } else { + camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix); + } + + camera.matrixWorldInverse.copy(camera.matrixWorld).invert(); + } + + this.updateCamera = function (camera) { + if (session === null) return; + cameraVR.near = cameraR.near = cameraL.near = camera.near; + cameraVR.far = cameraR.far = cameraL.far = camera.far; + + if (_currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far) { + // Note that the new renderState won't apply until the next frame. See #18320 + session.updateRenderState({ + depthNear: cameraVR.near, + depthFar: cameraVR.far + }); + _currentDepthNear = cameraVR.near; + _currentDepthFar = cameraVR.far; + } + + const parent = camera.parent; + const cameras = cameraVR.cameras; + updateCamera(cameraVR, parent); + + for (let i = 0; i < cameras.length; i++) { + updateCamera(cameras[i], parent); + } + + cameraVR.matrixWorld.decompose(cameraVR.position, cameraVR.quaternion, cameraVR.scale); // update user camera and its children + + camera.position.copy(cameraVR.position); + camera.quaternion.copy(cameraVR.quaternion); + camera.scale.copy(cameraVR.scale); + camera.matrix.copy(cameraVR.matrix); + camera.matrixWorld.copy(cameraVR.matrixWorld); + const children = camera.children; + + for (let i = 0, l = children.length; i < l; i++) { + children[i].updateMatrixWorld(true); + } // update projection matrix for proper view frustum culling + + + if (cameras.length === 2) { + setProjectionFromUnion(cameraVR, cameraL, cameraR); + } else { + // assume single camera setup (AR) + cameraVR.projectionMatrix.copy(cameraL.projectionMatrix); + } + }; + + this.getCamera = function () { + return cameraVR; + }; + + this.getFoveation = function () { + if (glProjLayer !== null) { + return glProjLayer.fixedFoveation; + } + + if (glBaseLayer !== null) { + return glBaseLayer.fixedFoveation; + } + + return undefined; + }; + + this.setFoveation = function (foveation) { + // 0 = no foveation = full resolution + // 1 = maximum foveation = the edges render at lower resolution + if (glProjLayer !== null) { + glProjLayer.fixedFoveation = foveation; + } + + if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined) { + glBaseLayer.fixedFoveation = foveation; + } + }; // Animation Loop + + + let onAnimationFrameCallback = null; + + function onAnimationFrame(time, frame) { + pose = frame.getViewerPose(referenceSpace); + xrFrame = frame; + + if (pose !== null) { + const views = pose.views; + + if (glBaseLayer !== null) { + state.bindXRFramebuffer(glBaseLayer.framebuffer); + } + + let cameraVRNeedsUpdate = false; // check if it's necessary to rebuild cameraVR's camera list + + if (views.length !== cameraVR.cameras.length) { + cameraVR.cameras.length = 0; + cameraVRNeedsUpdate = true; + } + + for (let i = 0; i < views.length; i++) { + const view = views[i]; + let viewport = null; + + if (glBaseLayer !== null) { + viewport = glBaseLayer.getViewport(view); + } else { + const glSubImage = glBinding.getViewSubImage(glProjLayer, view); + state.bindXRFramebuffer(glFramebuffer); + + if (glSubImage.depthStencilTexture !== undefined) { + gl.framebufferTexture2D(gl.FRAMEBUFFER, depthStyle, gl.TEXTURE_2D, glSubImage.depthStencilTexture, 0); + } + + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, glSubImage.colorTexture, 0); + viewport = glSubImage.viewport; + } + + const camera = cameras[i]; + camera.matrix.fromArray(view.transform.matrix); + camera.projectionMatrix.fromArray(view.projectionMatrix); + camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height); + + if (i === 0) { + cameraVR.matrix.copy(camera.matrix); + } + + if (cameraVRNeedsUpdate === true) { + cameraVR.cameras.push(camera); + } + } + + if (isMultisample) { + state.bindXRFramebuffer(glMultisampledFramebuffer); + if (clearStyle !== null) gl.clear(clearStyle); + } + } // + + + const inputSources = session.inputSources; + + for (let i = 0; i < controllers.length; i++) { + const controller = controllers[i]; + const inputSource = inputSources[i]; + controller.update(inputSource, frame, referenceSpace); + } + + if (onAnimationFrameCallback) onAnimationFrameCallback(time, frame); + + if (isMultisample) { + const width = glProjLayer.textureWidth; + const height = glProjLayer.textureHeight; + state.bindFramebuffer(gl.READ_FRAMEBUFFER, glMultisampledFramebuffer); + state.bindFramebuffer(gl.DRAW_FRAMEBUFFER, glFramebuffer); // Invalidate the depth here to avoid flush of the depth data to main memory. + + gl.invalidateFramebuffer(gl.READ_FRAMEBUFFER, [depthStyle]); + gl.invalidateFramebuffer(gl.DRAW_FRAMEBUFFER, [depthStyle]); + gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, gl.COLOR_BUFFER_BIT, gl.NEAREST); // Invalidate the MSAA buffer because it's not needed anymore. + + gl.invalidateFramebuffer(gl.READ_FRAMEBUFFER, [gl.COLOR_ATTACHMENT0]); + state.bindFramebuffer(gl.READ_FRAMEBUFFER, null); + state.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null); + state.bindFramebuffer(gl.FRAMEBUFFER, glMultisampledFramebuffer); + } + + xrFrame = null; + } + + const animation = new WebGLAnimation(); + animation.setAnimationLoop(onAnimationFrame); + + this.setAnimationLoop = function (callback) { + onAnimationFrameCallback = callback; + }; + + this.dispose = function () {}; + } + + } + + function WebGLMaterials(properties) { + function refreshFogUniforms(uniforms, fog) { + uniforms.fogColor.value.copy(fog.color); + + if (fog.isFog) { + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + } else if (fog.isFogExp2) { + uniforms.fogDensity.value = fog.density; + } + } + + function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) { + if (material.isMeshBasicMaterial) { + refreshUniformsCommon(uniforms, material); + } else if (material.isMeshLambertMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsLambert(uniforms, material); + } else if (material.isMeshToonMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsToon(uniforms, material); + } else if (material.isMeshPhongMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsPhong(uniforms, material); + } else if (material.isMeshStandardMaterial) { + refreshUniformsCommon(uniforms, material); + + if (material.isMeshPhysicalMaterial) { + refreshUniformsPhysical(uniforms, material, transmissionRenderTarget); + } else { + refreshUniformsStandard(uniforms, material); + } + } else if (material.isMeshMatcapMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsMatcap(uniforms, material); + } else if (material.isMeshDepthMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsDepth(uniforms, material); + } else if (material.isMeshDistanceMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsDistance(uniforms, material); + } else if (material.isMeshNormalMaterial) { + refreshUniformsCommon(uniforms, material); + refreshUniformsNormal(uniforms, material); + } else if (material.isLineBasicMaterial) { + refreshUniformsLine(uniforms, material); + + if (material.isLineDashedMaterial) { + refreshUniformsDash(uniforms, material); + } + } else if (material.isPointsMaterial) { + refreshUniformsPoints(uniforms, material, pixelRatio, height); + } else if (material.isSpriteMaterial) { + refreshUniformsSprites(uniforms, material); + } else if (material.isShadowMaterial) { + uniforms.color.value.copy(material.color); + uniforms.opacity.value = material.opacity; + } else if (material.isShaderMaterial) { + material.uniformsNeedUpdate = false; // #15581 + } + } + + function refreshUniformsCommon(uniforms, material) { + uniforms.opacity.value = material.opacity; + + if (material.color) { + uniforms.diffuse.value.copy(material.color); + } + + if (material.emissive) { + uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity); + } + + if (material.map) { + uniforms.map.value = material.map; + } + + if (material.alphaMap) { + uniforms.alphaMap.value = material.alphaMap; + } + + if (material.specularMap) { + uniforms.specularMap.value = material.specularMap; + } + + if (material.alphaTest > 0) { + uniforms.alphaTest.value = material.alphaTest; + } + + const envMap = properties.get(material).envMap; + + if (envMap) { + uniforms.envMap.value = envMap; + uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1; + uniforms.reflectivity.value = material.reflectivity; + uniforms.ior.value = material.ior; + uniforms.refractionRatio.value = material.refractionRatio; + + const maxMipLevel = properties.get(envMap).__maxMipLevel; + + if (maxMipLevel !== undefined) { + uniforms.maxMipLevel.value = maxMipLevel; + } + } + + if (material.lightMap) { + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + } + + if (material.aoMap) { + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + } // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. displacementMap map + // 4. normal map + // 5. bump map + // 6. roughnessMap map + // 7. metalnessMap map + // 8. alphaMap map + // 9. emissiveMap map + // 10. clearcoat map + // 11. clearcoat normal map + // 12. clearcoat roughnessMap map + // 13. specular intensity map + // 14. specular tint map + // 15. transmission map + // 16. thickness map + + + let uvScaleMap; + + if (material.map) { + uvScaleMap = material.map; + } else if (material.specularMap) { + uvScaleMap = material.specularMap; + } else if (material.displacementMap) { + uvScaleMap = material.displacementMap; + } else if (material.normalMap) { + uvScaleMap = material.normalMap; + } else if (material.bumpMap) { + uvScaleMap = material.bumpMap; + } else if (material.roughnessMap) { + uvScaleMap = material.roughnessMap; + } else if (material.metalnessMap) { + uvScaleMap = material.metalnessMap; + } else if (material.alphaMap) { + uvScaleMap = material.alphaMap; + } else if (material.emissiveMap) { + uvScaleMap = material.emissiveMap; + } else if (material.clearcoatMap) { + uvScaleMap = material.clearcoatMap; + } else if (material.clearcoatNormalMap) { + uvScaleMap = material.clearcoatNormalMap; + } else if (material.clearcoatRoughnessMap) { + uvScaleMap = material.clearcoatRoughnessMap; + } else if (material.specularIntensityMap) { + uvScaleMap = material.specularIntensityMap; + } else if (material.specularTintMap) { + uvScaleMap = material.specularTintMap; + } else if (material.transmissionMap) { + uvScaleMap = material.transmissionMap; + } else if (material.thicknessMap) { + uvScaleMap = material.thicknessMap; + } + + if (uvScaleMap !== undefined) { + // backwards compatibility + if (uvScaleMap.isWebGLRenderTarget) { + uvScaleMap = uvScaleMap.texture; + } + + if (uvScaleMap.matrixAutoUpdate === true) { + uvScaleMap.updateMatrix(); + } + + uniforms.uvTransform.value.copy(uvScaleMap.matrix); + } // uv repeat and offset setting priorities for uv2 + // 1. ao map + // 2. light map + + + let uv2ScaleMap; + + if (material.aoMap) { + uv2ScaleMap = material.aoMap; + } else if (material.lightMap) { + uv2ScaleMap = material.lightMap; + } + + if (uv2ScaleMap !== undefined) { + // backwards compatibility + if (uv2ScaleMap.isWebGLRenderTarget) { + uv2ScaleMap = uv2ScaleMap.texture; + } + + if (uv2ScaleMap.matrixAutoUpdate === true) { + uv2ScaleMap.updateMatrix(); + } + + uniforms.uv2Transform.value.copy(uv2ScaleMap.matrix); + } + } + + function refreshUniformsLine(uniforms, material) { + uniforms.diffuse.value.copy(material.color); + uniforms.opacity.value = material.opacity; + } + + function refreshUniformsDash(uniforms, material) { + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + } + + function refreshUniformsPoints(uniforms, material, pixelRatio, height) { + uniforms.diffuse.value.copy(material.color); + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * pixelRatio; + uniforms.scale.value = height * 0.5; + + if (material.map) { + uniforms.map.value = material.map; + } + + if (material.alphaMap) { + uniforms.alphaMap.value = material.alphaMap; + } + + if (material.alphaTest > 0) { + uniforms.alphaTest.value = material.alphaTest; + } // uv repeat and offset setting priorities + // 1. color map + // 2. alpha map + + + let uvScaleMap; + + if (material.map) { + uvScaleMap = material.map; + } else if (material.alphaMap) { + uvScaleMap = material.alphaMap; + } + + if (uvScaleMap !== undefined) { + if (uvScaleMap.matrixAutoUpdate === true) { + uvScaleMap.updateMatrix(); + } + + uniforms.uvTransform.value.copy(uvScaleMap.matrix); + } + } + + function refreshUniformsSprites(uniforms, material) { + uniforms.diffuse.value.copy(material.color); + uniforms.opacity.value = material.opacity; + uniforms.rotation.value = material.rotation; + + if (material.map) { + uniforms.map.value = material.map; + } + + if (material.alphaMap) { + uniforms.alphaMap.value = material.alphaMap; + } + + if (material.alphaTest > 0) { + uniforms.alphaTest.value = material.alphaTest; + } // uv repeat and offset setting priorities + // 1. color map + // 2. alpha map + + + let uvScaleMap; + + if (material.map) { + uvScaleMap = material.map; + } else if (material.alphaMap) { + uvScaleMap = material.alphaMap; + } + + if (uvScaleMap !== undefined) { + if (uvScaleMap.matrixAutoUpdate === true) { + uvScaleMap.updateMatrix(); + } + + uniforms.uvTransform.value.copy(uvScaleMap.matrix); + } + } + + function refreshUniformsLambert(uniforms, material) { + if (material.emissiveMap) { + uniforms.emissiveMap.value = material.emissiveMap; + } + } + + function refreshUniformsPhong(uniforms, material) { + uniforms.specular.value.copy(material.specular); + uniforms.shininess.value = Math.max(material.shininess, 1e-4); // to prevent pow( 0.0, 0.0 ) + + if (material.emissiveMap) { + uniforms.emissiveMap.value = material.emissiveMap; + } + + if (material.bumpMap) { + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if (material.side === BackSide) uniforms.bumpScale.value *= -1; + } + + if (material.normalMap) { + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); + } + + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + } + + function refreshUniformsToon(uniforms, material) { + if (material.gradientMap) { + uniforms.gradientMap.value = material.gradientMap; + } + + if (material.emissiveMap) { + uniforms.emissiveMap.value = material.emissiveMap; + } + + if (material.bumpMap) { + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if (material.side === BackSide) uniforms.bumpScale.value *= -1; + } + + if (material.normalMap) { + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); + } + + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + } + + function refreshUniformsStandard(uniforms, material) { + uniforms.roughness.value = material.roughness; + uniforms.metalness.value = material.metalness; + + if (material.roughnessMap) { + uniforms.roughnessMap.value = material.roughnessMap; + } + + if (material.metalnessMap) { + uniforms.metalnessMap.value = material.metalnessMap; + } + + if (material.emissiveMap) { + uniforms.emissiveMap.value = material.emissiveMap; + } + + if (material.bumpMap) { + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if (material.side === BackSide) uniforms.bumpScale.value *= -1; + } + + if (material.normalMap) { + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); + } + + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + + const envMap = properties.get(material).envMap; + + if (envMap) { + //uniforms.envMap.value = material.envMap; // part of uniforms common + uniforms.envMapIntensity.value = material.envMapIntensity; + } + } + + function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) { + refreshUniformsStandard(uniforms, material); + uniforms.ior.value = material.ior; // also part of uniforms common + + if (material.sheenTint) uniforms.sheenTint.value.copy(material.sheenTint); + + if (material.clearcoat > 0) { + uniforms.clearcoat.value = material.clearcoat; + uniforms.clearcoatRoughness.value = material.clearcoatRoughness; + + if (material.clearcoatMap) { + uniforms.clearcoatMap.value = material.clearcoatMap; + } + + if (material.clearcoatRoughnessMap) { + uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap; + } + + if (material.clearcoatNormalMap) { + uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale); + uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap; + + if (material.side === BackSide) { + uniforms.clearcoatNormalScale.value.negate(); + } + } + } + + if (material.transmission > 0) { + uniforms.transmission.value = material.transmission; + uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture; + uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height); + + if (material.transmissionMap) { + uniforms.transmissionMap.value = material.transmissionMap; + } + + uniforms.thickness.value = material.thickness; + + if (material.thicknessMap) { + uniforms.thicknessMap.value = material.thicknessMap; + } + + uniforms.attenuationDistance.value = material.attenuationDistance; + uniforms.attenuationTint.value.copy(material.attenuationTint); + } + + uniforms.specularIntensity.value = material.specularIntensity; + uniforms.specularTint.value.copy(material.specularTint); + + if (material.specularIntensityMap) { + uniforms.specularIntensityMap.value = material.specularIntensityMap; + } + + if (material.specularTintMap) { + uniforms.specularTintMap.value = material.specularTintMap; + } + } + + function refreshUniformsMatcap(uniforms, material) { + if (material.matcap) { + uniforms.matcap.value = material.matcap; + } + + if (material.bumpMap) { + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if (material.side === BackSide) uniforms.bumpScale.value *= -1; + } + + if (material.normalMap) { + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); + } + + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + } + + function refreshUniformsDepth(uniforms, material) { + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + } + + function refreshUniformsDistance(uniforms, material) { + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + + uniforms.referencePosition.value.copy(material.referencePosition); + uniforms.nearDistance.value = material.nearDistance; + uniforms.farDistance.value = material.farDistance; + } + + function refreshUniformsNormal(uniforms, material) { + if (material.bumpMap) { + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if (material.side === BackSide) uniforms.bumpScale.value *= -1; + } + + if (material.normalMap) { + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy(material.normalScale); + if (material.side === BackSide) uniforms.normalScale.value.negate(); + } + + if (material.displacementMap) { + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + } + } + + return { + refreshFogUniforms: refreshFogUniforms, + refreshMaterialUniforms: refreshMaterialUniforms + }; + } + + function createCanvasElement() { + const canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); + canvas.style.display = 'block'; + return canvas; + } + + function WebGLRenderer(parameters = {}) { + const _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(), + _context = parameters.context !== undefined ? parameters.context : null, + _alpha = parameters.alpha !== undefined ? parameters.alpha : false, + _depth = parameters.depth !== undefined ? parameters.depth : true, + _stencil = parameters.stencil !== undefined ? parameters.stencil : true, + _antialias = parameters.antialias !== undefined ? parameters.antialias : false, + _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default', + _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false; + + let currentRenderList = null; + let currentRenderState = null; // render() can be called from within a callback triggered by another render. + // We track this so that the nested render call gets its list and state isolated from the parent render call. + + const renderListStack = []; + const renderStateStack = []; // public properties + + this.domElement = _canvas; // Debug configuration container + + this.debug = { + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: true + }; // clearing + + this.autoClear = true; + this.autoClearColor = true; + this.autoClearDepth = true; + this.autoClearStencil = true; // scene graph + + this.sortObjects = true; // user-defined clipping + + this.clippingPlanes = []; + this.localClippingEnabled = false; // physically based shading + + this.gammaFactor = 2.0; // for backwards compatibility + + this.outputEncoding = LinearEncoding; // physical lights + + this.physicallyCorrectLights = false; // tone mapping + + this.toneMapping = NoToneMapping; + this.toneMappingExposure = 1.0; // internal properties + + const _this = this; + + let _isContextLost = false; // internal state cache + + let _currentActiveCubeFace = 0; + let _currentActiveMipmapLevel = 0; + let _currentRenderTarget = null; + + let _currentMaterialId = -1; + + let _currentCamera = null; + + const _currentViewport = new Vector4(); + + const _currentScissor = new Vector4(); + + let _currentScissorTest = null; // + + let _width = _canvas.width; + let _height = _canvas.height; + let _pixelRatio = 1; + let _opaqueSort = null; + let _transparentSort = null; + + const _viewport = new Vector4(0, 0, _width, _height); + + const _scissor = new Vector4(0, 0, _width, _height); + + let _scissorTest = false; // + + const _currentDrawBuffers = []; // frustum + + const _frustum = new Frustum(); // clipping + + + let _clippingEnabled = false; + let _localClippingEnabled = false; // transmission + + let _transmissionRenderTarget = null; // camera matrices cache + + const _projScreenMatrix = new Matrix4(); + + const _vector3 = new Vector3(); + + const _emptyScene = { + background: null, + fog: null, + environment: null, + overrideMaterial: null, + isScene: true + }; + + function getTargetPixelRatio() { + return _currentRenderTarget === null ? _pixelRatio : 1; + } // initialize + + + let _gl = _context; + + function getContext(contextNames, contextAttributes) { + for (let i = 0; i < contextNames.length; i++) { + const contextName = contextNames[i]; + + const context = _canvas.getContext(contextName, contextAttributes); + + if (context !== null) return context; + } + + return null; + } + + try { + const contextAttributes = { + alpha: _alpha, + depth: _depth, + stencil: _stencil, + antialias: _antialias, + premultipliedAlpha: _premultipliedAlpha, + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference, + failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat + }; // event listeners must be registered before WebGL context is created, see #12753 + + _canvas.addEventListener('webglcontextlost', onContextLost, false); + + _canvas.addEventListener('webglcontextrestored', onContextRestore, false); + + if (_gl === null) { + const contextNames = ['webgl2', 'webgl', 'experimental-webgl']; + + if (_this.isWebGL1Renderer === true) { + contextNames.shift(); + } + + _gl = getContext(contextNames, contextAttributes); + + if (_gl === null) { + if (getContext(contextNames)) { + throw new Error('Error creating WebGL context with your selected attributes.'); + } else { + throw new Error('Error creating WebGL context.'); + } + } + } // Some experimental-webgl implementations do not have getShaderPrecisionFormat + + + if (_gl.getShaderPrecisionFormat === undefined) { + _gl.getShaderPrecisionFormat = function () { + return { + 'rangeMin': 1, + 'rangeMax': 1, + 'precision': 1 + }; + }; + } + } catch (error) { + console.error('THREE.WebGLRenderer: ' + error.message); + throw error; + } + + let extensions, capabilities, state, info; + let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects; + let programCache, materials, renderLists, renderStates, clipping, shadowMap; + let background, morphtargets, bufferRenderer, indexedBufferRenderer; + let utils, bindingStates; + + function initGLContext() { + extensions = new WebGLExtensions(_gl); + capabilities = new WebGLCapabilities(_gl, extensions, parameters); + extensions.init(capabilities); + utils = new WebGLUtils(_gl, extensions, capabilities); + state = new WebGLState(_gl, extensions, capabilities); + _currentDrawBuffers[0] = _gl.BACK; + info = new WebGLInfo(_gl); + properties = new WebGLProperties(); + textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info); + cubemaps = new WebGLCubeMaps(_this); + cubeuvmaps = new WebGLCubeUVMaps(_this); + attributes = new WebGLAttributes(_gl, capabilities); + bindingStates = new WebGLBindingStates(_gl, extensions, attributes, capabilities); + geometries = new WebGLGeometries(_gl, attributes, info, bindingStates); + objects = new WebGLObjects(_gl, geometries, attributes, info); + morphtargets = new WebGLMorphtargets(_gl); + clipping = new WebGLClipping(properties); + programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping); + materials = new WebGLMaterials(properties); + renderLists = new WebGLRenderLists(properties); + renderStates = new WebGLRenderStates(extensions, capabilities); + background = new WebGLBackground(_this, cubemaps, state, objects, _premultipliedAlpha); + shadowMap = new WebGLShadowMap(_this, objects, capabilities); + bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities); + indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities); + info.programs = programCache.programs; + _this.capabilities = capabilities; + _this.extensions = extensions; + _this.properties = properties; + _this.renderLists = renderLists; + _this.shadowMap = shadowMap; + _this.state = state; + _this.info = info; + } + + initGLContext(); // xr + + const xr = new WebXRManager(_this, _gl); + this.xr = xr; // API + + this.getContext = function () { + return _gl; + }; + + this.getContextAttributes = function () { + return _gl.getContextAttributes(); + }; + + this.forceContextLoss = function () { + const extension = extensions.get('WEBGL_lose_context'); + if (extension) extension.loseContext(); + }; + + this.forceContextRestore = function () { + const extension = extensions.get('WEBGL_lose_context'); + if (extension) extension.restoreContext(); + }; + + this.getPixelRatio = function () { + return _pixelRatio; + }; + + this.setPixelRatio = function (value) { + if (value === undefined) return; + _pixelRatio = value; + this.setSize(_width, _height, false); + }; + + this.getSize = function (target) { + return target.set(_width, _height); + }; + + this.setSize = function (width, height, updateStyle) { + if (xr.isPresenting) { + console.warn('THREE.WebGLRenderer: Can\'t change size while VR device is presenting.'); + return; + } + + _width = width; + _height = height; + _canvas.width = Math.floor(width * _pixelRatio); + _canvas.height = Math.floor(height * _pixelRatio); + + if (updateStyle !== false) { + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; + } + + this.setViewport(0, 0, width, height); + }; + + this.getDrawingBufferSize = function (target) { + return target.set(_width * _pixelRatio, _height * _pixelRatio).floor(); + }; + + this.setDrawingBufferSize = function (width, height, pixelRatio) { + _width = width; + _height = height; + _pixelRatio = pixelRatio; + _canvas.width = Math.floor(width * pixelRatio); + _canvas.height = Math.floor(height * pixelRatio); + this.setViewport(0, 0, width, height); + }; + + this.getCurrentViewport = function (target) { + return target.copy(_currentViewport); + }; + + this.getViewport = function (target) { + return target.copy(_viewport); + }; + + this.setViewport = function (x, y, width, height) { + if (x.isVector4) { + _viewport.set(x.x, x.y, x.z, x.w); + } else { + _viewport.set(x, y, width, height); + } + + state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor()); + }; + + this.getScissor = function (target) { + return target.copy(_scissor); + }; + + this.setScissor = function (x, y, width, height) { + if (x.isVector4) { + _scissor.set(x.x, x.y, x.z, x.w); + } else { + _scissor.set(x, y, width, height); + } + + state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor()); + }; + + this.getScissorTest = function () { + return _scissorTest; + }; + + this.setScissorTest = function (boolean) { + state.setScissorTest(_scissorTest = boolean); + }; + + this.setOpaqueSort = function (method) { + _opaqueSort = method; + }; + + this.setTransparentSort = function (method) { + _transparentSort = method; + }; // Clearing + + + this.getClearColor = function (target) { + return target.copy(background.getClearColor()); + }; + + this.setClearColor = function () { + background.setClearColor.apply(background, arguments); + }; + + this.getClearAlpha = function () { + return background.getClearAlpha(); + }; + + this.setClearAlpha = function () { + background.setClearAlpha.apply(background, arguments); + }; + + this.clear = function (color, depth, stencil) { + let bits = 0; + if (color === undefined || color) bits |= _gl.COLOR_BUFFER_BIT; + if (depth === undefined || depth) bits |= _gl.DEPTH_BUFFER_BIT; + if (stencil === undefined || stencil) bits |= _gl.STENCIL_BUFFER_BIT; + + _gl.clear(bits); + }; + + this.clearColor = function () { + this.clear(true, false, false); + }; + + this.clearDepth = function () { + this.clear(false, true, false); + }; + + this.clearStencil = function () { + this.clear(false, false, true); + }; // + + + this.dispose = function () { + _canvas.removeEventListener('webglcontextlost', onContextLost, false); + + _canvas.removeEventListener('webglcontextrestored', onContextRestore, false); + + renderLists.dispose(); + renderStates.dispose(); + properties.dispose(); + cubemaps.dispose(); + cubeuvmaps.dispose(); + objects.dispose(); + bindingStates.dispose(); + xr.dispose(); + xr.removeEventListener('sessionstart', onXRSessionStart); + xr.removeEventListener('sessionend', onXRSessionEnd); + + if (_transmissionRenderTarget) { + _transmissionRenderTarget.dispose(); + + _transmissionRenderTarget = null; + } + + animation.stop(); + }; // Events + + + function onContextLost(event) { + event.preventDefault(); + console.log('THREE.WebGLRenderer: Context Lost.'); + _isContextLost = true; + } + + function onContextRestore() { + console.log('THREE.WebGLRenderer: Context Restored.'); + _isContextLost = false; + const infoAutoReset = info.autoReset; + const shadowMapEnabled = shadowMap.enabled; + const shadowMapAutoUpdate = shadowMap.autoUpdate; + const shadowMapNeedsUpdate = shadowMap.needsUpdate; + const shadowMapType = shadowMap.type; + initGLContext(); + info.autoReset = infoAutoReset; + shadowMap.enabled = shadowMapEnabled; + shadowMap.autoUpdate = shadowMapAutoUpdate; + shadowMap.needsUpdate = shadowMapNeedsUpdate; + shadowMap.type = shadowMapType; + } + + function onMaterialDispose(event) { + const material = event.target; + material.removeEventListener('dispose', onMaterialDispose); + deallocateMaterial(material); + } // Buffer deallocation + + + function deallocateMaterial(material) { + releaseMaterialProgramReferences(material); + properties.remove(material); + } + + function releaseMaterialProgramReferences(material) { + const programs = properties.get(material).programs; + + if (programs !== undefined) { + programs.forEach(function (program) { + programCache.releaseProgram(program); + }); + } + } // Buffer rendering + + + function renderObjectImmediate(object, program) { + object.render(function (object) { + _this.renderBufferImmediate(object, program); + }); + } + + this.renderBufferImmediate = function (object, program) { + bindingStates.initAttributes(); + const buffers = properties.get(object); + if (object.hasPositions && !buffers.position) buffers.position = _gl.createBuffer(); + if (object.hasNormals && !buffers.normal) buffers.normal = _gl.createBuffer(); + if (object.hasUvs && !buffers.uv) buffers.uv = _gl.createBuffer(); + if (object.hasColors && !buffers.color) buffers.color = _gl.createBuffer(); + const programAttributes = program.getAttributes(); + + if (object.hasPositions) { + _gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.position); + + _gl.bufferData(_gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW); + + bindingStates.enableAttribute(programAttributes.position.location); + + _gl.vertexAttribPointer(programAttributes.position.location, 3, _gl.FLOAT, false, 0, 0); + } + + if (object.hasNormals) { + _gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.normal); + + _gl.bufferData(_gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW); + + bindingStates.enableAttribute(programAttributes.normal.location); + + _gl.vertexAttribPointer(programAttributes.normal.location, 3, _gl.FLOAT, false, 0, 0); + } + + if (object.hasUvs) { + _gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.uv); + + _gl.bufferData(_gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW); + + bindingStates.enableAttribute(programAttributes.uv.location); + + _gl.vertexAttribPointer(programAttributes.uv.location, 2, _gl.FLOAT, false, 0, 0); + } + + if (object.hasColors) { + _gl.bindBuffer(_gl.ARRAY_BUFFER, buffers.color); + + _gl.bufferData(_gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW); + + bindingStates.enableAttribute(programAttributes.color.location); + + _gl.vertexAttribPointer(programAttributes.color.location, 3, _gl.FLOAT, false, 0, 0); + } + + bindingStates.disableUnusedAttributes(); + + _gl.drawArrays(_gl.TRIANGLES, 0, object.count); + + object.count = 0; + }; + + this.renderBufferDirect = function (camera, scene, geometry, material, object, group) { + if (scene === null) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null) + + const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0; + const program = setProgram(camera, scene, material, object); + state.setMaterial(material, frontFaceCW); // + + let index = geometry.index; + const position = geometry.attributes.position; // + + if (index === null) { + if (position === undefined || position.count === 0) return; + } else if (index.count === 0) { + return; + } // + + + let rangeFactor = 1; + + if (material.wireframe === true) { + index = geometries.getWireframeAttribute(geometry); + rangeFactor = 2; + } + + if (geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined) { + morphtargets.update(object, geometry, material, program); + } + + bindingStates.setup(object, material, program, geometry, index); + let attribute; + let renderer = bufferRenderer; + + if (index !== null) { + attribute = attributes.get(index); + renderer = indexedBufferRenderer; + renderer.setIndex(attribute); + } // + + + const dataCount = index !== null ? index.count : position.count; + const rangeStart = geometry.drawRange.start * rangeFactor; + const rangeCount = geometry.drawRange.count * rangeFactor; + const groupStart = group !== null ? group.start * rangeFactor : 0; + const groupCount = group !== null ? group.count * rangeFactor : Infinity; + const drawStart = Math.max(rangeStart, groupStart); + const drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1; + const drawCount = Math.max(0, drawEnd - drawStart + 1); + if (drawCount === 0) return; // + + if (object.isMesh) { + if (material.wireframe === true) { + state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio()); + renderer.setMode(_gl.LINES); + } else { + renderer.setMode(_gl.TRIANGLES); + } + } else if (object.isLine) { + let lineWidth = material.linewidth; + if (lineWidth === undefined) lineWidth = 1; // Not using Line*Material + + state.setLineWidth(lineWidth * getTargetPixelRatio()); + + if (object.isLineSegments) { + renderer.setMode(_gl.LINES); + } else if (object.isLineLoop) { + renderer.setMode(_gl.LINE_LOOP); + } else { + renderer.setMode(_gl.LINE_STRIP); + } + } else if (object.isPoints) { + renderer.setMode(_gl.POINTS); + } else if (object.isSprite) { + renderer.setMode(_gl.TRIANGLES); + } + + if (object.isInstancedMesh) { + renderer.renderInstances(drawStart, drawCount, object.count); + } else if (geometry.isInstancedBufferGeometry) { + const instanceCount = Math.min(geometry.instanceCount, geometry._maxInstanceCount); + renderer.renderInstances(drawStart, drawCount, instanceCount); + } else { + renderer.render(drawStart, drawCount); + } + }; // Compile + + + this.compile = function (scene, camera) { + currentRenderState = renderStates.get(scene); + currentRenderState.init(); + renderStateStack.push(currentRenderState); + scene.traverseVisible(function (object) { + if (object.isLight && object.layers.test(camera.layers)) { + currentRenderState.pushLight(object); + + if (object.castShadow) { + currentRenderState.pushShadow(object); + } + } + }); + currentRenderState.setupLights(_this.physicallyCorrectLights); + scene.traverse(function (object) { + const material = object.material; + + if (material) { + if (Array.isArray(material)) { + for (let i = 0; i < material.length; i++) { + const material2 = material[i]; + getProgram(material2, scene, object); + } + } else { + getProgram(material, scene, object); + } + } + }); + renderStateStack.pop(); + currentRenderState = null; + }; // Animation Loop + + + let onAnimationFrameCallback = null; + + function onAnimationFrame(time) { + if (onAnimationFrameCallback) onAnimationFrameCallback(time); + } + + function onXRSessionStart() { + animation.stop(); + } + + function onXRSessionEnd() { + animation.start(); + } + + const animation = new WebGLAnimation(); + animation.setAnimationLoop(onAnimationFrame); + if (typeof window !== 'undefined') animation.setContext(window); + + this.setAnimationLoop = function (callback) { + onAnimationFrameCallback = callback; + xr.setAnimationLoop(callback); + callback === null ? animation.stop() : animation.start(); + }; + + xr.addEventListener('sessionstart', onXRSessionStart); + xr.addEventListener('sessionend', onXRSessionEnd); // Rendering + + this.render = function (scene, camera) { + if (camera !== undefined && camera.isCamera !== true) { + console.error('THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.'); + return; + } + + if (_isContextLost === true) return; // update scene graph + + if (scene.autoUpdate === true) scene.updateMatrixWorld(); // update camera matrices and frustum + + if (camera.parent === null) camera.updateMatrixWorld(); + + if (xr.enabled === true && xr.isPresenting === true) { + if (xr.cameraAutoUpdate === true) xr.updateCamera(camera); + camera = xr.getCamera(); // use XR camera for rendering + } // + + + if (scene.isScene === true) scene.onBeforeRender(_this, scene, camera, _currentRenderTarget); + currentRenderState = renderStates.get(scene, renderStateStack.length); + currentRenderState.init(); + renderStateStack.push(currentRenderState); + + _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + + _frustum.setFromProjectionMatrix(_projScreenMatrix); + + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled, camera); + currentRenderList = renderLists.get(scene, renderListStack.length); + currentRenderList.init(); + renderListStack.push(currentRenderList); + projectObject(scene, camera, 0, _this.sortObjects); + currentRenderList.finish(); + + if (_this.sortObjects === true) { + currentRenderList.sort(_opaqueSort, _transparentSort); + } // + + + if (_clippingEnabled === true) clipping.beginShadows(); + const shadowsArray = currentRenderState.state.shadowsArray; + shadowMap.render(shadowsArray, scene, camera); + if (_clippingEnabled === true) clipping.endShadows(); // + + if (this.info.autoReset === true) this.info.reset(); // + + background.render(currentRenderList, scene); // render scene + + currentRenderState.setupLights(_this.physicallyCorrectLights); + + if (camera.isArrayCamera) { + const cameras = camera.cameras; + + for (let i = 0, l = cameras.length; i < l; i++) { + const camera2 = cameras[i]; + renderScene(currentRenderList, scene, camera2, camera2.viewport); + } + } else { + renderScene(currentRenderList, scene, camera); + } // + + + if (_currentRenderTarget !== null) { + // resolve multisample renderbuffers to a single-sample texture if necessary + textures.updateMultisampleRenderTarget(_currentRenderTarget); // Generate mipmap if we're using any kind of mipmap filtering + + textures.updateRenderTargetMipmap(_currentRenderTarget); + } // + + + if (scene.isScene === true) scene.onAfterRender(_this, scene, camera); // Ensure depth buffer writing is enabled so it can be cleared on next render + + state.buffers.depth.setTest(true); + state.buffers.depth.setMask(true); + state.buffers.color.setMask(true); + state.setPolygonOffset(false); // _gl.finish(); + + bindingStates.resetDefaultState(); + _currentMaterialId = -1; + _currentCamera = null; + renderStateStack.pop(); + + if (renderStateStack.length > 0) { + currentRenderState = renderStateStack[renderStateStack.length - 1]; + } else { + currentRenderState = null; + } + + renderListStack.pop(); + + if (renderListStack.length > 0) { + currentRenderList = renderListStack[renderListStack.length - 1]; + } else { + currentRenderList = null; + } + }; + + function projectObject(object, camera, groupOrder, sortObjects) { + if (object.visible === false) return; + const visible = object.layers.test(camera.layers); + + if (visible) { + if (object.isGroup) { + groupOrder = object.renderOrder; + } else if (object.isLOD) { + if (object.autoUpdate === true) object.update(camera); + } else if (object.isLight) { + currentRenderState.pushLight(object); + + if (object.castShadow) { + currentRenderState.pushShadow(object); + } + } else if (object.isSprite) { + if (!object.frustumCulled || _frustum.intersectsSprite(object)) { + if (sortObjects) { + _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix); + } + + const geometry = objects.update(object); + const material = object.material; + + if (material.visible) { + currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null); + } + } + } else if (object.isImmediateRenderObject) { + if (sortObjects) { + _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix); + } + + currentRenderList.push(object, null, object.material, groupOrder, _vector3.z, null); + } else if (object.isMesh || object.isLine || object.isPoints) { + if (object.isSkinnedMesh) { + // update skeleton only once in a frame + if (object.skeleton.frame !== info.render.frame) { + object.skeleton.update(); + object.skeleton.frame = info.render.frame; + } + } + + if (!object.frustumCulled || _frustum.intersectsObject(object)) { + if (sortObjects) { + _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix); + } + + const geometry = objects.update(object); + const material = object.material; + + if (Array.isArray(material)) { + const groups = geometry.groups; + + for (let i = 0, l = groups.length; i < l; i++) { + const group = groups[i]; + const groupMaterial = material[group.materialIndex]; + + if (groupMaterial && groupMaterial.visible) { + currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group); + } + } + } else if (material.visible) { + currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null); + } + } + } + } + + const children = object.children; + + for (let i = 0, l = children.length; i < l; i++) { + projectObject(children[i], camera, groupOrder, sortObjects); + } + } + + function renderScene(currentRenderList, scene, camera, viewport) { + const opaqueObjects = currentRenderList.opaque; + const transmissiveObjects = currentRenderList.transmissive; + const transparentObjects = currentRenderList.transparent; + currentRenderState.setupLightsView(camera); + if (transmissiveObjects.length > 0) renderTransmissionPass(opaqueObjects, scene, camera); + if (viewport) state.viewport(_currentViewport.copy(viewport)); + if (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera); + if (transmissiveObjects.length > 0) renderObjects(transmissiveObjects, scene, camera); + if (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera); + } + + function renderTransmissionPass(opaqueObjects, scene, camera) { + if (_transmissionRenderTarget === null) { + const needsAntialias = _antialias === true && capabilities.isWebGL2 === true; + const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget; + _transmissionRenderTarget = new renderTargetType(1024, 1024, { + generateMipmaps: true, + type: utils.convert(HalfFloatType) !== null ? HalfFloatType : UnsignedByteType, + minFilter: LinearMipmapLinearFilter, + magFilter: NearestFilter, + wrapS: ClampToEdgeWrapping, + wrapT: ClampToEdgeWrapping + }); + } + + const currentRenderTarget = _this.getRenderTarget(); + + _this.setRenderTarget(_transmissionRenderTarget); + + _this.clear(); // Turn off the features which can affect the frag color for opaque objects pass. + // Otherwise they are applied twice in opaque objects pass and transmission objects pass. + + + const currentToneMapping = _this.toneMapping; + _this.toneMapping = NoToneMapping; + renderObjects(opaqueObjects, scene, camera); + _this.toneMapping = currentToneMapping; + textures.updateMultisampleRenderTarget(_transmissionRenderTarget); + textures.updateRenderTargetMipmap(_transmissionRenderTarget); + + _this.setRenderTarget(currentRenderTarget); + } + + function renderObjects(renderList, scene, camera) { + const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null; + + for (let i = 0, l = renderList.length; i < l; i++) { + const renderItem = renderList[i]; + const object = renderItem.object; + const geometry = renderItem.geometry; + const material = overrideMaterial === null ? renderItem.material : overrideMaterial; + const group = renderItem.group; + + if (object.layers.test(camera.layers)) { + renderObject(object, scene, camera, geometry, material, group); + } + } + } + + function renderObject(object, scene, camera, geometry, material, group) { + object.onBeforeRender(_this, scene, camera, geometry, material, group); + object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld); + object.normalMatrix.getNormalMatrix(object.modelViewMatrix); + + if (object.isImmediateRenderObject) { + const program = setProgram(camera, scene, material, object); + state.setMaterial(material); + bindingStates.reset(); + renderObjectImmediate(object, program); + } else { + if (material.transparent === true && material.side === DoubleSide) { + material.side = BackSide; + material.needsUpdate = true; + + _this.renderBufferDirect(camera, scene, geometry, material, object, group); + + material.side = FrontSide; + material.needsUpdate = true; + + _this.renderBufferDirect(camera, scene, geometry, material, object, group); + + material.side = DoubleSide; + } else { + _this.renderBufferDirect(camera, scene, geometry, material, object, group); + } + } + + object.onAfterRender(_this, scene, camera, geometry, material, group); + } + + function getProgram(material, scene, object) { + if (scene.isScene !== true) scene = _emptyScene; // scene could be a Mesh, Line, Points, ... + + const materialProperties = properties.get(material); + const lights = currentRenderState.state.lights; + const shadowsArray = currentRenderState.state.shadowsArray; + const lightsStateVersion = lights.state.version; + const parameters = programCache.getParameters(material, lights.state, shadowsArray, scene, object); + const programCacheKey = programCache.getProgramCacheKey(parameters); + let programs = materialProperties.programs; // always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change + + materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null; + materialProperties.fog = scene.fog; + materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment); + + if (programs === undefined) { + // new material + material.addEventListener('dispose', onMaterialDispose); + programs = new Map(); + materialProperties.programs = programs; + } + + let program = programs.get(programCacheKey); + + if (program !== undefined) { + // early out if program and light state is identical + if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) { + updateCommonMaterialProperties(material, parameters); + return program; + } + } else { + parameters.uniforms = programCache.getUniforms(material); + material.onBuild(parameters, _this); + material.onBeforeCompile(parameters, _this); + program = programCache.acquireProgram(parameters, programCacheKey); + programs.set(programCacheKey, program); + materialProperties.uniforms = parameters.uniforms; + } + + const uniforms = materialProperties.uniforms; + + if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) { + uniforms.clippingPlanes = clipping.uniform; + } + + updateCommonMaterialProperties(material, parameters); // store the light setup it was created for + + materialProperties.needsLights = materialNeedsLights(material); + materialProperties.lightsStateVersion = lightsStateVersion; + + if (materialProperties.needsLights) { + // wire up the material to this renderer's lighting state + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.lightProbe.value = lights.state.probe; + uniforms.directionalLights.value = lights.state.directional; + uniforms.directionalLightShadows.value = lights.state.directionalShadow; + uniforms.spotLights.value = lights.state.spot; + uniforms.spotLightShadows.value = lights.state.spotShadow; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.ltc_1.value = lights.state.rectAreaLTC1; + uniforms.ltc_2.value = lights.state.rectAreaLTC2; + uniforms.pointLights.value = lights.state.point; + uniforms.pointLightShadows.value = lights.state.pointShadow; + uniforms.hemisphereLights.value = lights.state.hemi; + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; // TODO (abelnation): add area lights shadow info to uniforms + } + + const progUniforms = program.getUniforms(); + const uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms); + materialProperties.currentProgram = program; + materialProperties.uniformsList = uniformsList; + return program; + } + + function updateCommonMaterialProperties(material, parameters) { + const materialProperties = properties.get(material); + materialProperties.outputEncoding = parameters.outputEncoding; + materialProperties.instancing = parameters.instancing; + materialProperties.skinning = parameters.skinning; + materialProperties.morphTargets = parameters.morphTargets; + materialProperties.morphNormals = parameters.morphNormals; + materialProperties.numClippingPlanes = parameters.numClippingPlanes; + materialProperties.numIntersection = parameters.numClipIntersection; + materialProperties.vertexAlphas = parameters.vertexAlphas; + materialProperties.vertexTangents = parameters.vertexTangents; + } + + function setProgram(camera, scene, material, object) { + if (scene.isScene !== true) scene = _emptyScene; // scene could be a Mesh, Line, Points, ... + + textures.resetTextureUnits(); + const fog = scene.fog; + const environment = material.isMeshStandardMaterial ? scene.environment : null; + const encoding = _currentRenderTarget === null ? _this.outputEncoding : _currentRenderTarget.texture.encoding; + const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment); + const vertexAlphas = material.vertexColors === true && !!object.geometry && !!object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4; + const vertexTangents = !!object.geometry && !!object.geometry.attributes.tangent; + const morphTargets = !!object.geometry && !!object.geometry.morphAttributes.position; + const morphNormals = !!object.geometry && !!object.geometry.morphAttributes.normal; + const materialProperties = properties.get(material); + const lights = currentRenderState.state.lights; + + if (_clippingEnabled === true) { + if (_localClippingEnabled === true || camera !== _currentCamera) { + const useCache = camera === _currentCamera && material.id === _currentMaterialId; // we might want to call this function with some ClippingGroup + // object instead of the material, once it becomes feasible + // (#8465, #8379) + + clipping.setState(material, camera, useCache); + } + } // + + + let needsProgramChange = false; + + if (material.version === materialProperties.__version) { + if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) { + needsProgramChange = true; + } else if (materialProperties.outputEncoding !== encoding) { + needsProgramChange = true; + } else if (object.isInstancedMesh && materialProperties.instancing === false) { + needsProgramChange = true; + } else if (!object.isInstancedMesh && materialProperties.instancing === true) { + needsProgramChange = true; + } else if (object.isSkinnedMesh && materialProperties.skinning === false) { + needsProgramChange = true; + } else if (!object.isSkinnedMesh && materialProperties.skinning === true) { + needsProgramChange = true; + } else if (materialProperties.envMap !== envMap) { + needsProgramChange = true; + } else if (material.fog && materialProperties.fog !== fog) { + needsProgramChange = true; + } else if (materialProperties.numClippingPlanes !== undefined && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) { + needsProgramChange = true; + } else if (materialProperties.vertexAlphas !== vertexAlphas) { + needsProgramChange = true; + } else if (materialProperties.vertexTangents !== vertexTangents) { + needsProgramChange = true; + } else if (materialProperties.morphTargets !== morphTargets) { + needsProgramChange = true; + } else if (materialProperties.morphNormals !== morphNormals) { + needsProgramChange = true; + } + } else { + needsProgramChange = true; + materialProperties.__version = material.version; + } // + + + let program = materialProperties.currentProgram; + + if (needsProgramChange === true) { + program = getProgram(material, scene, object); + } + + let refreshProgram = false; + let refreshMaterial = false; + let refreshLights = false; + const p_uniforms = program.getUniforms(), + m_uniforms = materialProperties.uniforms; + + if (state.useProgram(program.program)) { + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + } + + if (material.id !== _currentMaterialId) { + _currentMaterialId = material.id; + refreshMaterial = true; + } + + if (refreshProgram || _currentCamera !== camera) { + p_uniforms.setValue(_gl, 'projectionMatrix', camera.projectionMatrix); + + if (capabilities.logarithmicDepthBuffer) { + p_uniforms.setValue(_gl, 'logDepthBufFC', 2.0 / (Math.log(camera.far + 1.0) / Math.LN2)); + } + + if (_currentCamera !== camera) { + _currentCamera = camera; // lighting uniforms depend on the camera so enforce an update + // now, in case this material supports lights - or later, when + // the next material that does gets activated: + + refreshMaterial = true; // set to true on material change + + refreshLights = true; // remains set until update done + } // load material specific uniforms + // (shader material also gets them for the sake of genericity) + + + if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap) { + const uCamPos = p_uniforms.map.cameraPosition; + + if (uCamPos !== undefined) { + uCamPos.setValue(_gl, _vector3.setFromMatrixPosition(camera.matrixWorld)); + } + } + + if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) { + p_uniforms.setValue(_gl, 'isOrthographic', camera.isOrthographicCamera === true); + } + + if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.isShadowMaterial || object.isSkinnedMesh) { + p_uniforms.setValue(_gl, 'viewMatrix', camera.matrixWorldInverse); + } + } // skinning uniforms must be set even if material didn't change + // auto-setting of texture unit for bone texture must go before other textures + // otherwise textures used for skinning can take over texture units reserved for other material textures + + + if (object.isSkinnedMesh) { + p_uniforms.setOptional(_gl, object, 'bindMatrix'); + p_uniforms.setOptional(_gl, object, 'bindMatrixInverse'); + const skeleton = object.skeleton; + + if (skeleton) { + if (capabilities.floatVertexTextures) { + if (skeleton.boneTexture === null) skeleton.computeBoneTexture(); + p_uniforms.setValue(_gl, 'boneTexture', skeleton.boneTexture, textures); + p_uniforms.setValue(_gl, 'boneTextureSize', skeleton.boneTextureSize); + } else { + p_uniforms.setOptional(_gl, skeleton, 'boneMatrices'); + } + } + } + + if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) { + materialProperties.receiveShadow = object.receiveShadow; + p_uniforms.setValue(_gl, 'receiveShadow', object.receiveShadow); + } + + if (refreshMaterial) { + p_uniforms.setValue(_gl, 'toneMappingExposure', _this.toneMappingExposure); + + if (materialProperties.needsLights) { + // the current material requires lighting info + // note: all lighting uniforms are always set correctly + // they simply reference the renderer's state for their + // values + // + // use the current material's .needsUpdate flags to set + // the GL state when required + markUniformsLightsNeedsUpdate(m_uniforms, refreshLights); + } // refresh uniforms common to several materials + + + if (fog && material.fog) { + materials.refreshFogUniforms(m_uniforms, fog); + } + + materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget); + WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures); + } + + if (material.isShaderMaterial && material.uniformsNeedUpdate === true) { + WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures); + material.uniformsNeedUpdate = false; + } + + if (material.isSpriteMaterial) { + p_uniforms.setValue(_gl, 'center', object.center); + } // common matrices + + + p_uniforms.setValue(_gl, 'modelViewMatrix', object.modelViewMatrix); + p_uniforms.setValue(_gl, 'normalMatrix', object.normalMatrix); + p_uniforms.setValue(_gl, 'modelMatrix', object.matrixWorld); + return program; + } // If uniforms are marked as clean, they don't need to be loaded to the GPU. + + + function markUniformsLightsNeedsUpdate(uniforms, value) { + uniforms.ambientLightColor.needsUpdate = value; + uniforms.lightProbe.needsUpdate = value; + uniforms.directionalLights.needsUpdate = value; + uniforms.directionalLightShadows.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.pointLightShadows.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.spotLightShadows.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + } + + function materialNeedsLights(material) { + return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true; + } + + this.getActiveCubeFace = function () { + return _currentActiveCubeFace; + }; + + this.getActiveMipmapLevel = function () { + return _currentActiveMipmapLevel; + }; + + this.getRenderTarget = function () { + return _currentRenderTarget; + }; + + this.setRenderTarget = function (renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) { + _currentRenderTarget = renderTarget; + _currentActiveCubeFace = activeCubeFace; + _currentActiveMipmapLevel = activeMipmapLevel; + + if (renderTarget && properties.get(renderTarget).__webglFramebuffer === undefined) { + textures.setupRenderTarget(renderTarget); + } + + let framebuffer = null; + let isCube = false; + let isRenderTarget3D = false; + + if (renderTarget) { + const texture = renderTarget.texture; + + if (texture.isDataTexture3D || texture.isDataTexture2DArray) { + isRenderTarget3D = true; + } + + const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer; + + if (renderTarget.isWebGLCubeRenderTarget) { + framebuffer = __webglFramebuffer[activeCubeFace]; + isCube = true; + } else if (renderTarget.isWebGLMultisampleRenderTarget) { + framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer; + } else { + framebuffer = __webglFramebuffer; + } + + _currentViewport.copy(renderTarget.viewport); + + _currentScissor.copy(renderTarget.scissor); + + _currentScissorTest = renderTarget.scissorTest; + } else { + _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor(); + + _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor(); + + _currentScissorTest = _scissorTest; + } + + const framebufferBound = state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + + if (framebufferBound && capabilities.drawBuffers) { + let needsUpdate = false; + + if (renderTarget) { + if (renderTarget.isWebGLMultipleRenderTargets) { + const textures = renderTarget.texture; + + if (_currentDrawBuffers.length !== textures.length || _currentDrawBuffers[0] !== _gl.COLOR_ATTACHMENT0) { + for (let i = 0, il = textures.length; i < il; i++) { + _currentDrawBuffers[i] = _gl.COLOR_ATTACHMENT0 + i; + } + + _currentDrawBuffers.length = textures.length; + needsUpdate = true; + } + } else { + if (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== _gl.COLOR_ATTACHMENT0) { + _currentDrawBuffers[0] = _gl.COLOR_ATTACHMENT0; + _currentDrawBuffers.length = 1; + needsUpdate = true; + } + } + } else { + if (_currentDrawBuffers.length !== 1 || _currentDrawBuffers[0] !== _gl.BACK) { + _currentDrawBuffers[0] = _gl.BACK; + _currentDrawBuffers.length = 1; + needsUpdate = true; + } + } + + if (needsUpdate) { + if (capabilities.isWebGL2) { + _gl.drawBuffers(_currentDrawBuffers); + } else { + extensions.get('WEBGL_draw_buffers').drawBuffersWEBGL(_currentDrawBuffers); + } + } + } + + state.viewport(_currentViewport); + state.scissor(_currentScissor); + state.setScissorTest(_currentScissorTest); + + if (isCube) { + const textureProperties = properties.get(renderTarget.texture); + + _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel); + } else if (isRenderTarget3D) { + const textureProperties = properties.get(renderTarget.texture); + const layer = activeCubeFace || 0; + + _gl.framebufferTextureLayer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer); + } + + _currentMaterialId = -1; // reset current material to ensure correct uniform bindings + }; + + this.readRenderTargetPixels = function (renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) { + if (!(renderTarget && renderTarget.isWebGLRenderTarget)) { + console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.'); + return; + } + + let framebuffer = properties.get(renderTarget).__webglFramebuffer; + + if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined) { + framebuffer = framebuffer[activeCubeFaceIndex]; + } + + if (framebuffer) { + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + + try { + const texture = renderTarget.texture; + const textureFormat = texture.format; + const textureType = texture.type; + + if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)) { + console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.'); + return; + } + + const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has('EXT_color_buffer_half_float') || capabilities.isWebGL2 && extensions.has('EXT_color_buffer_float')); + + if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513) + !(textureType === FloatType && (capabilities.isWebGL2 || extensions.has('OES_texture_float') || extensions.has('WEBGL_color_buffer_float'))) && // Chrome Mac >= 52 and Firefox + !halfFloatSupportedByExt) { + console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.'); + return; + } + + if (_gl.checkFramebufferStatus(_gl.FRAMEBUFFER) === _gl.FRAMEBUFFER_COMPLETE) { + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + if (x >= 0 && x <= renderTarget.width - width && y >= 0 && y <= renderTarget.height - height) { + _gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer); + } + } else { + console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.'); + } + } finally { + // restore framebuffer of current render target if necessary + const framebuffer = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null; + state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer); + } + } + }; + + this.copyFramebufferToTexture = function (position, texture, level = 0) { + const levelScale = Math.pow(2, -level); + const width = Math.floor(texture.image.width * levelScale); + const height = Math.floor(texture.image.height * levelScale); + let glFormat = utils.convert(texture.format); + + if (capabilities.isWebGL2) { + // Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100 + // Not needed in Chrome 93+ + if (glFormat === _gl.RGB) glFormat = _gl.RGB8; + if (glFormat === _gl.RGBA) glFormat = _gl.RGBA8; + } + + textures.setTexture2D(texture, 0); + + _gl.copyTexImage2D(_gl.TEXTURE_2D, level, glFormat, position.x, position.y, width, height, 0); + + state.unbindTexture(); + }; + + this.copyTextureToTexture = function (position, srcTexture, dstTexture, level = 0) { + const width = srcTexture.image.width; + const height = srcTexture.image.height; + const glFormat = utils.convert(dstTexture.format); + const glType = utils.convert(dstTexture.type); + textures.setTexture2D(dstTexture, 0); // As another texture upload may have changed pixelStorei + // parameters, make sure they are correct for the dstTexture + + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY); + + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha); + + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment); + + if (srcTexture.isDataTexture) { + _gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data); + } else { + if (srcTexture.isCompressedTexture) { + _gl.compressedTexSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data); + } else { + _gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image); + } + } // Generate mipmaps only when copying level 0 + + + if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(_gl.TEXTURE_2D); + state.unbindTexture(); + }; + + this.copyTextureToTexture3D = function (sourceBox, position, srcTexture, dstTexture, level = 0) { + if (_this.isWebGL1Renderer) { + console.warn('THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.'); + return; + } + + const width = sourceBox.max.x - sourceBox.min.x + 1; + const height = sourceBox.max.y - sourceBox.min.y + 1; + const depth = sourceBox.max.z - sourceBox.min.z + 1; + const glFormat = utils.convert(dstTexture.format); + const glType = utils.convert(dstTexture.type); + let glTarget; + + if (dstTexture.isDataTexture3D) { + textures.setTexture3D(dstTexture, 0); + glTarget = _gl.TEXTURE_3D; + } else if (dstTexture.isDataTexture2DArray) { + textures.setTexture2DArray(dstTexture, 0); + glTarget = _gl.TEXTURE_2D_ARRAY; + } else { + console.warn('THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.'); + return; + } + + _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY); + + _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha); + + _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment); + + const unpackRowLen = _gl.getParameter(_gl.UNPACK_ROW_LENGTH); + + const unpackImageHeight = _gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT); + + const unpackSkipPixels = _gl.getParameter(_gl.UNPACK_SKIP_PIXELS); + + const unpackSkipRows = _gl.getParameter(_gl.UNPACK_SKIP_ROWS); + + const unpackSkipImages = _gl.getParameter(_gl.UNPACK_SKIP_IMAGES); + + const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[0] : srcTexture.image; + + _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, image.width); + + _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, image.height); + + _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, sourceBox.min.x); + + _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, sourceBox.min.y); + + _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, sourceBox.min.z); + + if (srcTexture.isDataTexture || srcTexture.isDataTexture3D) { + _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data); + } else { + if (srcTexture.isCompressedTexture) { + console.warn('THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.'); + + _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data); + } else { + _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image); + } + } + + _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, unpackRowLen); + + _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight); + + _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, unpackSkipPixels); + + _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, unpackSkipRows); + + _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, unpackSkipImages); // Generate mipmaps only when copying level 0 + + + if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(glTarget); + state.unbindTexture(); + }; + + this.initTexture = function (texture) { + textures.setTexture2D(texture, 0); + state.unbindTexture(); + }; + + this.resetState = function () { + _currentActiveCubeFace = 0; + _currentActiveMipmapLevel = 0; + _currentRenderTarget = null; + state.reset(); + bindingStates.reset(); + }; + + if (typeof __THREE_DEVTOOLS__ !== 'undefined') { + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent('observe', { + detail: this + })); // eslint-disable-line no-undef + + } + } + + class WebGL1Renderer extends WebGLRenderer {} + + WebGL1Renderer.prototype.isWebGL1Renderer = true; + + class FogExp2 { + constructor(color, density = 0.00025) { + this.name = ''; + this.color = new Color(color); + this.density = density; + } + + clone() { + return new FogExp2(this.color, this.density); + } + + toJSON() { + return { + type: 'FogExp2', + color: this.color.getHex(), + density: this.density + }; + } + + } + + FogExp2.prototype.isFogExp2 = true; + + class Fog { + constructor(color, near = 1, far = 1000) { + this.name = ''; + this.color = new Color(color); + this.near = near; + this.far = far; + } + + clone() { + return new Fog(this.color, this.near, this.far); + } + + toJSON() { + return { + type: 'Fog', + color: this.color.getHex(), + near: this.near, + far: this.far + }; + } + + } + + Fog.prototype.isFog = true; + + class Scene extends Object3D { + constructor() { + super(); + this.type = 'Scene'; + this.background = null; + this.environment = null; + this.fog = null; + this.overrideMaterial = null; + this.autoUpdate = true; // checked by the renderer + + if (typeof __THREE_DEVTOOLS__ !== 'undefined') { + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent('observe', { + detail: this + })); // eslint-disable-line no-undef + + } + } + + copy(source, recursive) { + super.copy(source, recursive); + if (source.background !== null) this.background = source.background.clone(); + if (source.environment !== null) this.environment = source.environment.clone(); + if (source.fog !== null) this.fog = source.fog.clone(); + if (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone(); + this.autoUpdate = source.autoUpdate; + this.matrixAutoUpdate = source.matrixAutoUpdate; + return this; + } + + toJSON(meta) { + const data = super.toJSON(meta); + if (this.fog !== null) data.object.fog = this.fog.toJSON(); + return data; + } + + } + + Scene.prototype.isScene = true; + + class InterleavedBuffer { + constructor(array, stride) { + this.array = array; + this.stride = stride; + this.count = array !== undefined ? array.length / stride : 0; + this.usage = StaticDrawUsage; + this.updateRange = { + offset: 0, + count: -1 + }; + this.version = 0; + this.uuid = generateUUID(); + } + + onUploadCallback() {} + + set needsUpdate(value) { + if (value === true) this.version++; + } + + setUsage(value) { + this.usage = value; + return this; + } + + copy(source) { + this.array = new source.array.constructor(source.array); + this.count = source.count; + this.stride = source.stride; + this.usage = source.usage; + return this; + } + + copyAt(index1, attribute, index2) { + index1 *= this.stride; + index2 *= attribute.stride; + + for (let i = 0, l = this.stride; i < l; i++) { + this.array[index1 + i] = attribute.array[index2 + i]; + } + + return this; + } + + set(value, offset = 0) { + this.array.set(value, offset); + return this; + } + + clone(data) { + if (data.arrayBuffers === undefined) { + data.arrayBuffers = {}; + } + + if (this.array.buffer._uuid === undefined) { + this.array.buffer._uuid = generateUUID(); + } + + if (data.arrayBuffers[this.array.buffer._uuid] === undefined) { + data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer; + } + + const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]); + const ib = new this.constructor(array, this.stride); + ib.setUsage(this.usage); + return ib; + } + + onUpload(callback) { + this.onUploadCallback = callback; + return this; + } + + toJSON(data) { + if (data.arrayBuffers === undefined) { + data.arrayBuffers = {}; + } // generate UUID for array buffer if necessary + + + if (this.array.buffer._uuid === undefined) { + this.array.buffer._uuid = generateUUID(); + } + + if (data.arrayBuffers[this.array.buffer._uuid] === undefined) { + data.arrayBuffers[this.array.buffer._uuid] = Array.prototype.slice.call(new Uint32Array(this.array.buffer)); + } // + + + return { + uuid: this.uuid, + buffer: this.array.buffer._uuid, + type: this.array.constructor.name, + stride: this.stride + }; + } + + } + + InterleavedBuffer.prototype.isInterleavedBuffer = true; + + const _vector$6 = /*@__PURE__*/new Vector3(); + + class InterleavedBufferAttribute { + constructor(interleavedBuffer, itemSize, offset, normalized = false) { + this.name = ''; + this.data = interleavedBuffer; + this.itemSize = itemSize; + this.offset = offset; + this.normalized = normalized === true; + } + + get count() { + return this.data.count; + } + + get array() { + return this.data.array; + } + + set needsUpdate(value) { + this.data.needsUpdate = value; + } + + applyMatrix4(m) { + for (let i = 0, l = this.data.count; i < l; i++) { + _vector$6.x = this.getX(i); + _vector$6.y = this.getY(i); + _vector$6.z = this.getZ(i); + + _vector$6.applyMatrix4(m); + + this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z); + } + + return this; + } + + applyNormalMatrix(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$6.x = this.getX(i); + _vector$6.y = this.getY(i); + _vector$6.z = this.getZ(i); + + _vector$6.applyNormalMatrix(m); + + this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z); + } + + return this; + } + + transformDirection(m) { + for (let i = 0, l = this.count; i < l; i++) { + _vector$6.x = this.getX(i); + _vector$6.y = this.getY(i); + _vector$6.z = this.getZ(i); + + _vector$6.transformDirection(m); + + this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z); + } + + return this; + } + + setX(index, x) { + this.data.array[index * this.data.stride + this.offset] = x; + return this; + } + + setY(index, y) { + this.data.array[index * this.data.stride + this.offset + 1] = y; + return this; + } + + setZ(index, z) { + this.data.array[index * this.data.stride + this.offset + 2] = z; + return this; + } + + setW(index, w) { + this.data.array[index * this.data.stride + this.offset + 3] = w; + return this; + } + + getX(index) { + return this.data.array[index * this.data.stride + this.offset]; + } + + getY(index) { + return this.data.array[index * this.data.stride + this.offset + 1]; + } + + getZ(index) { + return this.data.array[index * this.data.stride + this.offset + 2]; + } + + getW(index) { + return this.data.array[index * this.data.stride + this.offset + 3]; + } + + setXY(index, x, y) { + index = index * this.data.stride + this.offset; + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + return this; + } + + setXYZ(index, x, y, z) { + index = index * this.data.stride + this.offset; + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + this.data.array[index + 2] = z; + return this; + } + + setXYZW(index, x, y, z, w) { + index = index * this.data.stride + this.offset; + this.data.array[index + 0] = x; + this.data.array[index + 1] = y; + this.data.array[index + 2] = z; + this.data.array[index + 3] = w; + return this; + } + + clone(data) { + if (data === undefined) { + console.log('THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.'); + const array = []; + + for (let i = 0; i < this.count; i++) { + const index = i * this.data.stride + this.offset; + + for (let j = 0; j < this.itemSize; j++) { + array.push(this.data.array[index + j]); + } + } + + return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized); + } else { + if (data.interleavedBuffers === undefined) { + data.interleavedBuffers = {}; + } + + if (data.interleavedBuffers[this.data.uuid] === undefined) { + data.interleavedBuffers[this.data.uuid] = this.data.clone(data); + } + + return new InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized); + } + } + + toJSON(data) { + if (data === undefined) { + console.log('THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.'); + const array = []; + + for (let i = 0; i < this.count; i++) { + const index = i * this.data.stride + this.offset; + + for (let j = 0; j < this.itemSize; j++) { + array.push(this.data.array[index + j]); + } + } // deinterleave data and save it as an ordinary buffer attribute for now + + + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: array, + normalized: this.normalized + }; + } else { + // save as true interlaved attribtue + if (data.interleavedBuffers === undefined) { + data.interleavedBuffers = {}; + } + + if (data.interleavedBuffers[this.data.uuid] === undefined) { + data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data); + } + + return { + isInterleavedBufferAttribute: true, + itemSize: this.itemSize, + data: this.data.uuid, + offset: this.offset, + normalized: this.normalized + }; + } + } + + } + + InterleavedBufferAttribute.prototype.isInterleavedBufferAttribute = true; + + /** + * parameters = { + * color: , + * map: new THREE.Texture( ), + * alphaMap: new THREE.Texture( ), + * rotation: , + * sizeAttenuation: + * } + */ + + class SpriteMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'SpriteMaterial'; + this.color = new Color(0xffffff); + this.map = null; + this.alphaMap = null; + this.rotation = 0; + this.sizeAttenuation = true; + this.transparent = true; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.alphaMap = source.alphaMap; + this.rotation = source.rotation; + this.sizeAttenuation = source.sizeAttenuation; + return this; + } + + } + + SpriteMaterial.prototype.isSpriteMaterial = true; + + let _geometry; + + const _intersectPoint = /*@__PURE__*/new Vector3(); + + const _worldScale = /*@__PURE__*/new Vector3(); + + const _mvPosition = /*@__PURE__*/new Vector3(); + + const _alignedPosition = /*@__PURE__*/new Vector2(); + + const _rotatedPosition = /*@__PURE__*/new Vector2(); + + const _viewWorldMatrix = /*@__PURE__*/new Matrix4(); + + const _vA = /*@__PURE__*/new Vector3(); + + const _vB = /*@__PURE__*/new Vector3(); + + const _vC = /*@__PURE__*/new Vector3(); + + const _uvA = /*@__PURE__*/new Vector2(); + + const _uvB = /*@__PURE__*/new Vector2(); + + const _uvC = /*@__PURE__*/new Vector2(); + + class Sprite extends Object3D { + constructor(material) { + super(); + this.type = 'Sprite'; + + if (_geometry === undefined) { + _geometry = new BufferGeometry(); + const float32Array = new Float32Array([-0.5, -0.5, 0, 0, 0, 0.5, -0.5, 0, 1, 0, 0.5, 0.5, 0, 1, 1, -0.5, 0.5, 0, 0, 1]); + const interleavedBuffer = new InterleavedBuffer(float32Array, 5); + + _geometry.setIndex([0, 1, 2, 0, 2, 3]); + + _geometry.setAttribute('position', new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false)); + + _geometry.setAttribute('uv', new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false)); + } + + this.geometry = _geometry; + this.material = material !== undefined ? material : new SpriteMaterial(); + this.center = new Vector2(0.5, 0.5); + } + + raycast(raycaster, intersects) { + if (raycaster.camera === null) { + console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'); + } + + _worldScale.setFromMatrixScale(this.matrixWorld); + + _viewWorldMatrix.copy(raycaster.camera.matrixWorld); + + this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld); + + _mvPosition.setFromMatrixPosition(this.modelViewMatrix); + + if (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) { + _worldScale.multiplyScalar(-_mvPosition.z); + } + + const rotation = this.material.rotation; + let sin, cos; + + if (rotation !== 0) { + cos = Math.cos(rotation); + sin = Math.sin(rotation); + } + + const center = this.center; + transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos); + transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos); + transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos); + + _uvA.set(0, 0); + + _uvB.set(1, 0); + + _uvC.set(1, 1); // check first triangle + + + let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint); + + if (intersect === null) { + // check second triangle + transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos); + + _uvB.set(0, 1); + + intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint); + + if (intersect === null) { + return; + } + } + + const distance = raycaster.ray.origin.distanceTo(_intersectPoint); + if (distance < raycaster.near || distance > raycaster.far) return; + intersects.push({ + distance: distance, + point: _intersectPoint.clone(), + uv: Triangle.getUV(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()), + face: null, + object: this + }); + } + + copy(source) { + super.copy(source); + if (source.center !== undefined) this.center.copy(source.center); + this.material = source.material; + return this; + } + + } + + Sprite.prototype.isSprite = true; + + function transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) { + // compute position in camera space + _alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale); // to check if rotation is not zero + + + if (sin !== undefined) { + _rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y; + _rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y; + } else { + _rotatedPosition.copy(_alignedPosition); + } + + vertexPosition.copy(mvPosition); + vertexPosition.x += _rotatedPosition.x; + vertexPosition.y += _rotatedPosition.y; // transform to world space + + vertexPosition.applyMatrix4(_viewWorldMatrix); + } + + const _v1$2 = /*@__PURE__*/new Vector3(); + + const _v2$1 = /*@__PURE__*/new Vector3(); + + class LOD extends Object3D { + constructor() { + super(); + this._currentLevel = 0; + this.type = 'LOD'; + Object.defineProperties(this, { + levels: { + enumerable: true, + value: [] + }, + isLOD: { + value: true + } + }); + this.autoUpdate = true; + } + + copy(source) { + super.copy(source, false); + const levels = source.levels; + + for (let i = 0, l = levels.length; i < l; i++) { + const level = levels[i]; + this.addLevel(level.object.clone(), level.distance); + } + + this.autoUpdate = source.autoUpdate; + return this; + } + + addLevel(object, distance = 0) { + distance = Math.abs(distance); + const levels = this.levels; + let l; + + for (l = 0; l < levels.length; l++) { + if (distance < levels[l].distance) { + break; + } + } + + levels.splice(l, 0, { + distance: distance, + object: object + }); + this.add(object); + return this; + } + + getCurrentLevel() { + return this._currentLevel; + } + + getObjectForDistance(distance) { + const levels = this.levels; + + if (levels.length > 0) { + let i, l; + + for (i = 1, l = levels.length; i < l; i++) { + if (distance < levels[i].distance) { + break; + } + } + + return levels[i - 1].object; + } + + return null; + } + + raycast(raycaster, intersects) { + const levels = this.levels; + + if (levels.length > 0) { + _v1$2.setFromMatrixPosition(this.matrixWorld); + + const distance = raycaster.ray.origin.distanceTo(_v1$2); + this.getObjectForDistance(distance).raycast(raycaster, intersects); + } + } + + update(camera) { + const levels = this.levels; + + if (levels.length > 1) { + _v1$2.setFromMatrixPosition(camera.matrixWorld); + + _v2$1.setFromMatrixPosition(this.matrixWorld); + + const distance = _v1$2.distanceTo(_v2$1) / camera.zoom; + levels[0].object.visible = true; + let i, l; + + for (i = 1, l = levels.length; i < l; i++) { + if (distance >= levels[i].distance) { + levels[i - 1].object.visible = false; + levels[i].object.visible = true; + } else { + break; + } + } + + this._currentLevel = i - 1; + + for (; i < l; i++) { + levels[i].object.visible = false; + } + } + } + + toJSON(meta) { + const data = super.toJSON(meta); + if (this.autoUpdate === false) data.object.autoUpdate = false; + data.object.levels = []; + const levels = this.levels; + + for (let i = 0, l = levels.length; i < l; i++) { + const level = levels[i]; + data.object.levels.push({ + object: level.object.uuid, + distance: level.distance + }); + } + + return data; + } + + } + + const _basePosition = /*@__PURE__*/new Vector3(); + + const _skinIndex = /*@__PURE__*/new Vector4(); + + const _skinWeight = /*@__PURE__*/new Vector4(); + + const _vector$5 = /*@__PURE__*/new Vector3(); + + const _matrix = /*@__PURE__*/new Matrix4(); + + class SkinnedMesh extends Mesh { + constructor(geometry, material) { + super(geometry, material); + this.type = 'SkinnedMesh'; + this.bindMode = 'attached'; + this.bindMatrix = new Matrix4(); + this.bindMatrixInverse = new Matrix4(); + } + + copy(source) { + super.copy(source); + this.bindMode = source.bindMode; + this.bindMatrix.copy(source.bindMatrix); + this.bindMatrixInverse.copy(source.bindMatrixInverse); + this.skeleton = source.skeleton; + return this; + } + + bind(skeleton, bindMatrix) { + this.skeleton = skeleton; + + if (bindMatrix === undefined) { + this.updateMatrixWorld(true); + this.skeleton.calculateInverses(); + bindMatrix = this.matrixWorld; + } + + this.bindMatrix.copy(bindMatrix); + this.bindMatrixInverse.copy(bindMatrix).invert(); + } + + pose() { + this.skeleton.pose(); + } + + normalizeSkinWeights() { + const vector = new Vector4(); + const skinWeight = this.geometry.attributes.skinWeight; + + for (let i = 0, l = skinWeight.count; i < l; i++) { + vector.x = skinWeight.getX(i); + vector.y = skinWeight.getY(i); + vector.z = skinWeight.getZ(i); + vector.w = skinWeight.getW(i); + const scale = 1.0 / vector.manhattanLength(); + + if (scale !== Infinity) { + vector.multiplyScalar(scale); + } else { + vector.set(1, 0, 0, 0); // do something reasonable + } + + skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w); + } + } + + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + + if (this.bindMode === 'attached') { + this.bindMatrixInverse.copy(this.matrixWorld).invert(); + } else if (this.bindMode === 'detached') { + this.bindMatrixInverse.copy(this.bindMatrix).invert(); + } else { + console.warn('THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode); + } + } + + boneTransform(index, target) { + const skeleton = this.skeleton; + const geometry = this.geometry; + + _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index); + + _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index); + + _basePosition.fromBufferAttribute(geometry.attributes.position, index).applyMatrix4(this.bindMatrix); + + target.set(0, 0, 0); + + for (let i = 0; i < 4; i++) { + const weight = _skinWeight.getComponent(i); + + if (weight !== 0) { + const boneIndex = _skinIndex.getComponent(i); + + _matrix.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]); + + target.addScaledVector(_vector$5.copy(_basePosition).applyMatrix4(_matrix), weight); + } + } + + return target.applyMatrix4(this.bindMatrixInverse); + } + + } + + SkinnedMesh.prototype.isSkinnedMesh = true; + + class Bone extends Object3D { + constructor() { + super(); + this.type = 'Bone'; + } + + } + + Bone.prototype.isBone = true; + + class DataTexture extends Texture { + constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding) { + super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding); + this.image = { + data: data, + width: width, + height: height + }; + this.magFilter = magFilter; + this.minFilter = minFilter; + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + this.needsUpdate = true; + } + + } + + DataTexture.prototype.isDataTexture = true; + + const _offsetMatrix = /*@__PURE__*/new Matrix4(); + + const _identityMatrix = /*@__PURE__*/new Matrix4(); + + class Skeleton { + constructor(bones = [], boneInverses = []) { + this.uuid = generateUUID(); + this.bones = bones.slice(0); + this.boneInverses = boneInverses; + this.boneMatrices = null; + this.boneTexture = null; + this.boneTextureSize = 0; + this.frame = -1; + this.init(); + } + + init() { + const bones = this.bones; + const boneInverses = this.boneInverses; + this.boneMatrices = new Float32Array(bones.length * 16); // calculate inverse bone matrices if necessary + + if (boneInverses.length === 0) { + this.calculateInverses(); + } else { + // handle special case + if (bones.length !== boneInverses.length) { + console.warn('THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.'); + this.boneInverses = []; + + for (let i = 0, il = this.bones.length; i < il; i++) { + this.boneInverses.push(new Matrix4()); + } + } + } + } + + calculateInverses() { + this.boneInverses.length = 0; + + for (let i = 0, il = this.bones.length; i < il; i++) { + const inverse = new Matrix4(); + + if (this.bones[i]) { + inverse.copy(this.bones[i].matrixWorld).invert(); + } + + this.boneInverses.push(inverse); + } + } + + pose() { + // recover the bind-time world matrices + for (let i = 0, il = this.bones.length; i < il; i++) { + const bone = this.bones[i]; + + if (bone) { + bone.matrixWorld.copy(this.boneInverses[i]).invert(); + } + } // compute the local matrices, positions, rotations and scales + + + for (let i = 0, il = this.bones.length; i < il; i++) { + const bone = this.bones[i]; + + if (bone) { + if (bone.parent && bone.parent.isBone) { + bone.matrix.copy(bone.parent.matrixWorld).invert(); + bone.matrix.multiply(bone.matrixWorld); + } else { + bone.matrix.copy(bone.matrixWorld); + } + + bone.matrix.decompose(bone.position, bone.quaternion, bone.scale); + } + } + } + + update() { + const bones = this.bones; + const boneInverses = this.boneInverses; + const boneMatrices = this.boneMatrices; + const boneTexture = this.boneTexture; // flatten bone matrices to array + + for (let i = 0, il = bones.length; i < il; i++) { + // compute the offset between the current and the original transform + const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix; + + _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]); + + _offsetMatrix.toArray(boneMatrices, i * 16); + } + + if (boneTexture !== null) { + boneTexture.needsUpdate = true; + } + } + + clone() { + return new Skeleton(this.bones, this.boneInverses); + } + + computeBoneTexture() { + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) + let size = Math.sqrt(this.bones.length * 4); // 4 pixels needed for 1 matrix + + size = ceilPowerOfTwo(size); + size = Math.max(size, 4); + const boneMatrices = new Float32Array(size * size * 4); // 4 floats per RGBA pixel + + boneMatrices.set(this.boneMatrices); // copy current values + + const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType); + this.boneMatrices = boneMatrices; + this.boneTexture = boneTexture; + this.boneTextureSize = size; + return this; + } + + getBoneByName(name) { + for (let i = 0, il = this.bones.length; i < il; i++) { + const bone = this.bones[i]; + + if (bone.name === name) { + return bone; + } + } + + return undefined; + } + + dispose() { + if (this.boneTexture !== null) { + this.boneTexture.dispose(); + this.boneTexture = null; + } + } + + fromJSON(json, bones) { + this.uuid = json.uuid; + + for (let i = 0, l = json.bones.length; i < l; i++) { + const uuid = json.bones[i]; + let bone = bones[uuid]; + + if (bone === undefined) { + console.warn('THREE.Skeleton: No bone found with UUID:', uuid); + bone = new Bone(); + } + + this.bones.push(bone); + this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i])); + } + + this.init(); + return this; + } + + toJSON() { + const data = { + metadata: { + version: 4.5, + type: 'Skeleton', + generator: 'Skeleton.toJSON' + }, + bones: [], + boneInverses: [] + }; + data.uuid = this.uuid; + const bones = this.bones; + const boneInverses = this.boneInverses; + + for (let i = 0, l = bones.length; i < l; i++) { + const bone = bones[i]; + data.bones.push(bone.uuid); + const boneInverse = boneInverses[i]; + data.boneInverses.push(boneInverse.toArray()); + } + + return data; + } + + } + + class InstancedBufferAttribute extends BufferAttribute { + constructor(array, itemSize, normalized, meshPerAttribute = 1) { + if (typeof normalized === 'number') { + meshPerAttribute = normalized; + normalized = false; + console.error('THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.'); + } + + super(array, itemSize, normalized); + this.meshPerAttribute = meshPerAttribute; + } + + copy(source) { + super.copy(source); + this.meshPerAttribute = source.meshPerAttribute; + return this; + } + + toJSON() { + const data = super.toJSON(); + data.meshPerAttribute = this.meshPerAttribute; + data.isInstancedBufferAttribute = true; + return data; + } + + } + + InstancedBufferAttribute.prototype.isInstancedBufferAttribute = true; + + const _instanceLocalMatrix = /*@__PURE__*/new Matrix4(); + + const _instanceWorldMatrix = /*@__PURE__*/new Matrix4(); + + const _instanceIntersects = []; + + const _mesh = /*@__PURE__*/new Mesh(); + + class InstancedMesh extends Mesh { + constructor(geometry, material, count) { + super(geometry, material); + this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16); + this.instanceColor = null; + this.count = count; + this.frustumCulled = false; + } + + copy(source) { + super.copy(source); + this.instanceMatrix.copy(source.instanceMatrix); + if (source.instanceColor !== null) this.instanceColor = source.instanceColor.clone(); + this.count = source.count; + return this; + } + + getColorAt(index, color) { + color.fromArray(this.instanceColor.array, index * 3); + } + + getMatrixAt(index, matrix) { + matrix.fromArray(this.instanceMatrix.array, index * 16); + } + + raycast(raycaster, intersects) { + const matrixWorld = this.matrixWorld; + const raycastTimes = this.count; + _mesh.geometry = this.geometry; + _mesh.material = this.material; + if (_mesh.material === undefined) return; + + for (let instanceId = 0; instanceId < raycastTimes; instanceId++) { + // calculate the world matrix for each instance + this.getMatrixAt(instanceId, _instanceLocalMatrix); + + _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix); // the mesh represents this single instance + + + _mesh.matrixWorld = _instanceWorldMatrix; + + _mesh.raycast(raycaster, _instanceIntersects); // process the result of raycast + + + for (let i = 0, l = _instanceIntersects.length; i < l; i++) { + const intersect = _instanceIntersects[i]; + intersect.instanceId = instanceId; + intersect.object = this; + intersects.push(intersect); + } + + _instanceIntersects.length = 0; + } + } + + setColorAt(index, color) { + if (this.instanceColor === null) { + this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3); + } + + color.toArray(this.instanceColor.array, index * 3); + } + + setMatrixAt(index, matrix) { + matrix.toArray(this.instanceMatrix.array, index * 16); + } + + updateMorphTargets() {} + + dispose() { + this.dispatchEvent({ + type: 'dispose' + }); + } + + } + + InstancedMesh.prototype.isInstancedMesh = true; + + /** + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * linecap: "round", + * linejoin: "round" + * } + */ + + class LineBasicMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'LineBasicMaterial'; + this.color = new Color(0xffffff); + this.linewidth = 1; + this.linecap = 'round'; + this.linejoin = 'round'; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + return this; + } + + } + + LineBasicMaterial.prototype.isLineBasicMaterial = true; + + const _start$1 = /*@__PURE__*/new Vector3(); + + const _end$1 = /*@__PURE__*/new Vector3(); + + const _inverseMatrix$1 = /*@__PURE__*/new Matrix4(); + + const _ray$1 = /*@__PURE__*/new Ray(); + + const _sphere$1 = /*@__PURE__*/new Sphere(); + + class Line extends Object3D { + constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) { + super(); + this.type = 'Line'; + this.geometry = geometry; + this.material = material; + this.updateMorphTargets(); + } + + copy(source) { + super.copy(source); + this.material = source.material; + this.geometry = source.geometry; + return this; + } + + computeLineDistances() { + const geometry = this.geometry; + + if (geometry.isBufferGeometry) { + // we assume non-indexed geometry + if (geometry.index === null) { + const positionAttribute = geometry.attributes.position; + const lineDistances = [0]; + + for (let i = 1, l = positionAttribute.count; i < l; i++) { + _start$1.fromBufferAttribute(positionAttribute, i - 1); + + _end$1.fromBufferAttribute(positionAttribute, i); + + lineDistances[i] = lineDistances[i - 1]; + lineDistances[i] += _start$1.distanceTo(_end$1); + } + + geometry.setAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1)); + } else { + console.warn('THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.'); + } + } else if (geometry.isGeometry) { + console.error('THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + + return this; + } + + raycast(raycaster, intersects) { + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Line.threshold; + const drawRange = geometry.drawRange; // Checking boundingSphere distance to ray + + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + + _sphere$1.copy(geometry.boundingSphere); + + _sphere$1.applyMatrix4(matrixWorld); + + _sphere$1.radius += threshold; + if (raycaster.ray.intersectsSphere(_sphere$1) === false) return; // + + _inverseMatrix$1.copy(matrixWorld).invert(); + + _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1); + + const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); + const localThresholdSq = localThreshold * localThreshold; + const vStart = new Vector3(); + const vEnd = new Vector3(); + const interSegment = new Vector3(); + const interRay = new Vector3(); + const step = this.isLineSegments ? 2 : 1; + + if (geometry.isBufferGeometry) { + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + + if (index !== null) { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + + for (let i = start, l = end - 1; i < l; i += step) { + const a = index.getX(i); + const b = index.getX(i + 1); + vStart.fromBufferAttribute(positionAttribute, a); + vEnd.fromBufferAttribute(positionAttribute, b); + + const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment); + + if (distSq > localThresholdSq) continue; + interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation + + const distance = raycaster.ray.origin.distanceTo(interRay); + if (distance < raycaster.near || distance > raycaster.far) continue; + intersects.push({ + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), + index: i, + face: null, + faceIndex: null, + object: this + }); + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); + + for (let i = start, l = end - 1; i < l; i += step) { + vStart.fromBufferAttribute(positionAttribute, i); + vEnd.fromBufferAttribute(positionAttribute, i + 1); + + const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment); + + if (distSq > localThresholdSq) continue; + interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation + + const distance = raycaster.ray.origin.distanceTo(interRay); + if (distance < raycaster.near || distance > raycaster.far) continue; + intersects.push({ + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4(this.matrixWorld), + index: i, + face: null, + faceIndex: null, + object: this + }); + } + } + } else if (geometry.isGeometry) { + console.error('THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + } + + updateMorphTargets() { + const geometry = this.geometry; + + if (geometry.isBufferGeometry) { + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + + if (morphAttribute !== undefined) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } else { + const morphTargets = geometry.morphTargets; + + if (morphTargets !== undefined && morphTargets.length > 0) { + console.error('THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + } + } + + } + + Line.prototype.isLine = true; + + const _start = /*@__PURE__*/new Vector3(); + + const _end = /*@__PURE__*/new Vector3(); + + class LineSegments extends Line { + constructor(geometry, material) { + super(geometry, material); + this.type = 'LineSegments'; + } + + computeLineDistances() { + const geometry = this.geometry; + + if (geometry.isBufferGeometry) { + // we assume non-indexed geometry + if (geometry.index === null) { + const positionAttribute = geometry.attributes.position; + const lineDistances = []; + + for (let i = 0, l = positionAttribute.count; i < l; i += 2) { + _start.fromBufferAttribute(positionAttribute, i); + + _end.fromBufferAttribute(positionAttribute, i + 1); + + lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1]; + lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end); + } + + geometry.setAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1)); + } else { + console.warn('THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.'); + } + } else if (geometry.isGeometry) { + console.error('THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + + return this; + } + + } + + LineSegments.prototype.isLineSegments = true; + + class LineLoop extends Line { + constructor(geometry, material) { + super(geometry, material); + this.type = 'LineLoop'; + } + + } + + LineLoop.prototype.isLineLoop = true; + + /** + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * alphaMap: new THREE.Texture( ), + * + * size: , + * sizeAttenuation: + * + * } + */ + + class PointsMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'PointsMaterial'; + this.color = new Color(0xffffff); + this.map = null; + this.alphaMap = null; + this.size = 1; + this.sizeAttenuation = true; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.alphaMap = source.alphaMap; + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + return this; + } + + } + + PointsMaterial.prototype.isPointsMaterial = true; + + const _inverseMatrix = /*@__PURE__*/new Matrix4(); + + const _ray = /*@__PURE__*/new Ray(); + + const _sphere = /*@__PURE__*/new Sphere(); + + const _position$2 = /*@__PURE__*/new Vector3(); + + class Points extends Object3D { + constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) { + super(); + this.type = 'Points'; + this.geometry = geometry; + this.material = material; + this.updateMorphTargets(); + } + + copy(source) { + super.copy(source); + this.material = source.material; + this.geometry = source.geometry; + return this; + } + + raycast(raycaster, intersects) { + const geometry = this.geometry; + const matrixWorld = this.matrixWorld; + const threshold = raycaster.params.Points.threshold; + const drawRange = geometry.drawRange; // Checking boundingSphere distance to ray + + if (geometry.boundingSphere === null) geometry.computeBoundingSphere(); + + _sphere.copy(geometry.boundingSphere); + + _sphere.applyMatrix4(matrixWorld); + + _sphere.radius += threshold; + if (raycaster.ray.intersectsSphere(_sphere) === false) return; // + + _inverseMatrix.copy(matrixWorld).invert(); + + _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix); + + const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3); + const localThresholdSq = localThreshold * localThreshold; + + if (geometry.isBufferGeometry) { + const index = geometry.index; + const attributes = geometry.attributes; + const positionAttribute = attributes.position; + + if (index !== null) { + const start = Math.max(0, drawRange.start); + const end = Math.min(index.count, drawRange.start + drawRange.count); + + for (let i = start, il = end; i < il; i++) { + const a = index.getX(i); + + _position$2.fromBufferAttribute(positionAttribute, a); + + testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this); + } + } else { + const start = Math.max(0, drawRange.start); + const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count); + + for (let i = start, l = end; i < l; i++) { + _position$2.fromBufferAttribute(positionAttribute, i); + + testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this); + } + } + } else { + console.error('THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + } + + updateMorphTargets() { + const geometry = this.geometry; + + if (geometry.isBufferGeometry) { + const morphAttributes = geometry.morphAttributes; + const keys = Object.keys(morphAttributes); + + if (keys.length > 0) { + const morphAttribute = morphAttributes[keys[0]]; + + if (morphAttribute !== undefined) { + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for (let m = 0, ml = morphAttribute.length; m < ml; m++) { + const name = morphAttribute[m].name || String(m); + this.morphTargetInfluences.push(0); + this.morphTargetDictionary[name] = m; + } + } + } + } else { + const morphTargets = geometry.morphTargets; + + if (morphTargets !== undefined && morphTargets.length > 0) { + console.error('THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.'); + } + } + } + + } + + Points.prototype.isPoints = true; + + function testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects, object) { + const rayPointDistanceSq = _ray.distanceSqToPoint(point); + + if (rayPointDistanceSq < localThresholdSq) { + const intersectPoint = new Vector3(); + + _ray.closestPointToPoint(point, intersectPoint); + + intersectPoint.applyMatrix4(matrixWorld); + const distance = raycaster.ray.origin.distanceTo(intersectPoint); + if (distance < raycaster.near || distance > raycaster.far) return; + intersects.push({ + distance: distance, + distanceToRay: Math.sqrt(rayPointDistanceSq), + point: intersectPoint, + index: index, + face: null, + object: object + }); + } + } + + class VideoTexture extends Texture { + constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) { + super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); + this.format = format !== undefined ? format : RGBFormat; + this.minFilter = minFilter !== undefined ? minFilter : LinearFilter; + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + this.generateMipmaps = false; + const scope = this; + + function updateVideo() { + scope.needsUpdate = true; + video.requestVideoFrameCallback(updateVideo); + } + + if ('requestVideoFrameCallback' in video) { + video.requestVideoFrameCallback(updateVideo); + } + } + + clone() { + return new this.constructor(this.image).copy(this); + } + + update() { + const video = this.image; + const hasVideoFrameCallback = ('requestVideoFrameCallback' in video); + + if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) { + this.needsUpdate = true; + } + } + + } + + VideoTexture.prototype.isVideoTexture = true; + + class CompressedTexture extends Texture { + constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) { + super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding); + this.image = { + width: width, + height: height + }; + this.mipmaps = mipmaps; // no flipping for cube textures + // (also flipping doesn't work for compressed textures ) + + this.flipY = false; // can't generate mipmaps for compressed textures + // mips must be embedded in DDS files + + this.generateMipmaps = false; + } + + } + + CompressedTexture.prototype.isCompressedTexture = true; + + class CanvasTexture extends Texture { + constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) { + super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); + this.needsUpdate = true; + } + + } + + CanvasTexture.prototype.isCanvasTexture = true; + + class DepthTexture extends Texture { + constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) { + format = format !== undefined ? format : DepthFormat; + + if (format !== DepthFormat && format !== DepthStencilFormat) { + throw new Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat'); + } + + if (type === undefined && format === DepthFormat) type = UnsignedShortType; + if (type === undefined && format === DepthStencilFormat) type = UnsignedInt248Type; + super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy); + this.image = { + width: width, + height: height + }; + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + this.flipY = false; + this.generateMipmaps = false; + } + + } + + DepthTexture.prototype.isDepthTexture = true; + + class CircleGeometry extends BufferGeometry { + constructor(radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2) { + super(); + this.type = 'CircleGeometry'; + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + segments = Math.max(3, segments); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // helper variables + + const vertex = new Vector3(); + const uv = new Vector2(); // center point + + vertices.push(0, 0, 0); + normals.push(0, 0, 1); + uvs.push(0.5, 0.5); + + for (let s = 0, i = 3; s <= segments; s++, i += 3) { + const segment = thetaStart + s / segments * thetaLength; // vertex + + vertex.x = radius * Math.cos(segment); + vertex.y = radius * Math.sin(segment); + vertices.push(vertex.x, vertex.y, vertex.z); // normal + + normals.push(0, 0, 1); // uvs + + uv.x = (vertices[i] / radius + 1) / 2; + uv.y = (vertices[i + 1] / radius + 1) / 2; + uvs.push(uv.x, uv.y); + } // indices + + + for (let i = 1; i <= segments; i++) { + indices.push(i, i + 1, 0); + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + } + + static fromJSON(data) { + return new CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength); + } + + } + + class CylinderGeometry extends BufferGeometry { + constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) { + super(); + this.type = 'CylinderGeometry'; + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + const scope = this; + radialSegments = Math.floor(radialSegments); + heightSegments = Math.floor(heightSegments); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // helper variables + + let index = 0; + const indexArray = []; + const halfHeight = height / 2; + let groupStart = 0; // generate geometry + + generateTorso(); + + if (openEnded === false) { + if (radiusTop > 0) generateCap(true); + if (radiusBottom > 0) generateCap(false); + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + + function generateTorso() { + const normal = new Vector3(); + const vertex = new Vector3(); + let groupCount = 0; // this will be used to calculate the normal + + const slope = (radiusBottom - radiusTop) / height; // generate vertices, normals and uvs + + for (let y = 0; y <= heightSegments; y++) { + const indexRow = []; + const v = y / heightSegments; // calculate the radius of the current row + + const radius = v * (radiusBottom - radiusTop) + radiusTop; + + for (let x = 0; x <= radialSegments; x++) { + const u = x / radialSegments; + const theta = u * thetaLength + thetaStart; + const sinTheta = Math.sin(theta); + const cosTheta = Math.cos(theta); // vertex + + vertex.x = radius * sinTheta; + vertex.y = -v * height + halfHeight; + vertex.z = radius * cosTheta; + vertices.push(vertex.x, vertex.y, vertex.z); // normal + + normal.set(sinTheta, slope, cosTheta).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv + + uvs.push(u, 1 - v); // save index of vertex in respective row + + indexRow.push(index++); + } // now save vertices of the row in our index array + + + indexArray.push(indexRow); + } // generate indices + + + for (let x = 0; x < radialSegments; x++) { + for (let y = 0; y < heightSegments; y++) { + // we use the index array to access the correct indices + const a = indexArray[y][x]; + const b = indexArray[y + 1][x]; + const c = indexArray[y + 1][x + 1]; + const d = indexArray[y][x + 1]; // faces + + indices.push(a, b, d); + indices.push(b, c, d); // update group counter + + groupCount += 6; + } + } // add a group to the geometry. this will ensure multi material support + + + scope.addGroup(groupStart, groupCount, 0); // calculate new start value for groups + + groupStart += groupCount; + } + + function generateCap(top) { + // save the index of the first center vertex + const centerIndexStart = index; + const uv = new Vector2(); + const vertex = new Vector3(); + let groupCount = 0; + const radius = top === true ? radiusTop : radiusBottom; + const sign = top === true ? 1 : -1; // first we generate the center vertex data of the cap. + // because the geometry needs one set of uvs per face, + // we must generate a center vertex per face/segment + + for (let x = 1; x <= radialSegments; x++) { + // vertex + vertices.push(0, halfHeight * sign, 0); // normal + + normals.push(0, sign, 0); // uv + + uvs.push(0.5, 0.5); // increase index + + index++; + } // save the index of the last center vertex + + + const centerIndexEnd = index; // now we generate the surrounding vertices, normals and uvs + + for (let x = 0; x <= radialSegments; x++) { + const u = x / radialSegments; + const theta = u * thetaLength + thetaStart; + const cosTheta = Math.cos(theta); + const sinTheta = Math.sin(theta); // vertex + + vertex.x = radius * sinTheta; + vertex.y = halfHeight * sign; + vertex.z = radius * cosTheta; + vertices.push(vertex.x, vertex.y, vertex.z); // normal + + normals.push(0, sign, 0); // uv + + uv.x = cosTheta * 0.5 + 0.5; + uv.y = sinTheta * 0.5 * sign + 0.5; + uvs.push(uv.x, uv.y); // increase index + + index++; + } // generate indices + + + for (let x = 0; x < radialSegments; x++) { + const c = centerIndexStart + x; + const i = centerIndexEnd + x; + + if (top === true) { + // face top + indices.push(i, i + 1, c); + } else { + // face bottom + indices.push(i + 1, i, c); + } + + groupCount += 3; + } // add a group to the geometry. this will ensure multi material support + + + scope.addGroup(groupStart, groupCount, top === true ? 1 : 2); // calculate new start value for groups + + groupStart += groupCount; + } + } + + static fromJSON(data) { + return new CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength); + } + + } + + class ConeGeometry extends CylinderGeometry { + constructor(radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) { + super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength); + this.type = 'ConeGeometry'; + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + } + + static fromJSON(data) { + return new ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength); + } + + } + + class PolyhedronGeometry extends BufferGeometry { + constructor(vertices, indices, radius = 1, detail = 0) { + super(); + this.type = 'PolyhedronGeometry'; + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; // default buffer data + + const vertexBuffer = []; + const uvBuffer = []; // the subdivision creates the vertex buffer data + + subdivide(detail); // all vertices should lie on a conceptual sphere with a given radius + + applyRadius(radius); // finally, create the uv data + + generateUVs(); // build non-indexed geometry + + this.setAttribute('position', new Float32BufferAttribute(vertexBuffer, 3)); + this.setAttribute('normal', new Float32BufferAttribute(vertexBuffer.slice(), 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvBuffer, 2)); + + if (detail === 0) { + this.computeVertexNormals(); // flat normals + } else { + this.normalizeNormals(); // smooth normals + } // helper functions + + + function subdivide(detail) { + const a = new Vector3(); + const b = new Vector3(); + const c = new Vector3(); // iterate over all faces and apply a subdivison with the given detail value + + for (let i = 0; i < indices.length; i += 3) { + // get the vertices of the face + getVertexByIndex(indices[i + 0], a); + getVertexByIndex(indices[i + 1], b); + getVertexByIndex(indices[i + 2], c); // perform subdivision + + subdivideFace(a, b, c, detail); + } + } + + function subdivideFace(a, b, c, detail) { + const cols = detail + 1; // we use this multidimensional array as a data structure for creating the subdivision + + const v = []; // construct all of the vertices for this subdivision + + for (let i = 0; i <= cols; i++) { + v[i] = []; + const aj = a.clone().lerp(c, i / cols); + const bj = b.clone().lerp(c, i / cols); + const rows = cols - i; + + for (let j = 0; j <= rows; j++) { + if (j === 0 && i === cols) { + v[i][j] = aj; + } else { + v[i][j] = aj.clone().lerp(bj, j / rows); + } + } + } // construct all of the faces + + + for (let i = 0; i < cols; i++) { + for (let j = 0; j < 2 * (cols - i) - 1; j++) { + const k = Math.floor(j / 2); + + if (j % 2 === 0) { + pushVertex(v[i][k + 1]); + pushVertex(v[i + 1][k]); + pushVertex(v[i][k]); + } else { + pushVertex(v[i][k + 1]); + pushVertex(v[i + 1][k + 1]); + pushVertex(v[i + 1][k]); + } + } + } + } + + function applyRadius(radius) { + const vertex = new Vector3(); // iterate over the entire buffer and apply the radius to each vertex + + for (let i = 0; i < vertexBuffer.length; i += 3) { + vertex.x = vertexBuffer[i + 0]; + vertex.y = vertexBuffer[i + 1]; + vertex.z = vertexBuffer[i + 2]; + vertex.normalize().multiplyScalar(radius); + vertexBuffer[i + 0] = vertex.x; + vertexBuffer[i + 1] = vertex.y; + vertexBuffer[i + 2] = vertex.z; + } + } + + function generateUVs() { + const vertex = new Vector3(); + + for (let i = 0; i < vertexBuffer.length; i += 3) { + vertex.x = vertexBuffer[i + 0]; + vertex.y = vertexBuffer[i + 1]; + vertex.z = vertexBuffer[i + 2]; + const u = azimuth(vertex) / 2 / Math.PI + 0.5; + const v = inclination(vertex) / Math.PI + 0.5; + uvBuffer.push(u, 1 - v); + } + + correctUVs(); + correctSeam(); + } + + function correctSeam() { + // handle case when face straddles the seam, see #3269 + for (let i = 0; i < uvBuffer.length; i += 6) { + // uv data of a single face + const x0 = uvBuffer[i + 0]; + const x1 = uvBuffer[i + 2]; + const x2 = uvBuffer[i + 4]; + const max = Math.max(x0, x1, x2); + const min = Math.min(x0, x1, x2); // 0.9 is somewhat arbitrary + + if (max > 0.9 && min < 0.1) { + if (x0 < 0.2) uvBuffer[i + 0] += 1; + if (x1 < 0.2) uvBuffer[i + 2] += 1; + if (x2 < 0.2) uvBuffer[i + 4] += 1; + } + } + } + + function pushVertex(vertex) { + vertexBuffer.push(vertex.x, vertex.y, vertex.z); + } + + function getVertexByIndex(index, vertex) { + const stride = index * 3; + vertex.x = vertices[stride + 0]; + vertex.y = vertices[stride + 1]; + vertex.z = vertices[stride + 2]; + } + + function correctUVs() { + const a = new Vector3(); + const b = new Vector3(); + const c = new Vector3(); + const centroid = new Vector3(); + const uvA = new Vector2(); + const uvB = new Vector2(); + const uvC = new Vector2(); + + for (let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) { + a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]); + b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]); + c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]); + uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]); + uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]); + uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]); + centroid.copy(a).add(b).add(c).divideScalar(3); + const azi = azimuth(centroid); + correctUV(uvA, j + 0, a, azi); + correctUV(uvB, j + 2, b, azi); + correctUV(uvC, j + 4, c, azi); + } + } + + function correctUV(uv, stride, vector, azimuth) { + if (azimuth < 0 && uv.x === 1) { + uvBuffer[stride] = uv.x - 1; + } + + if (vector.x === 0 && vector.z === 0) { + uvBuffer[stride] = azimuth / 2 / Math.PI + 0.5; + } + } // Angle around the Y axis, counter-clockwise when looking from above. + + + function azimuth(vector) { + return Math.atan2(vector.z, -vector.x); + } // Angle above the XZ plane. + + + function inclination(vector) { + return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z)); + } + } + + static fromJSON(data) { + return new PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details); + } + + } + + class DodecahedronGeometry extends PolyhedronGeometry { + constructor(radius = 1, detail = 0) { + const t = (1 + Math.sqrt(5)) / 2; + const r = 1 / t; + const vertices = [// (±1, ±1, ±1) + -1, -1, -1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1, 1, 1, 1, // (0, ±1/φ, ±φ) + 0, -r, -t, 0, -r, t, 0, r, -t, 0, r, t, // (±1/φ, ±φ, 0) + -r, -t, 0, -r, t, 0, r, -t, 0, r, t, 0, // (±φ, 0, ±1/φ) + -t, 0, -r, t, 0, -r, -t, 0, r, t, 0, r]; + const indices = [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]; + super(vertices, indices, radius, detail); + this.type = 'DodecahedronGeometry'; + this.parameters = { + radius: radius, + detail: detail + }; + } + + static fromJSON(data) { + return new DodecahedronGeometry(data.radius, data.detail); + } + + } + + const _v0 = new Vector3(); + + const _v1$1 = new Vector3(); + + const _normal = new Vector3(); + + const _triangle = new Triangle(); + + class EdgesGeometry extends BufferGeometry { + constructor(geometry, thresholdAngle) { + super(); + this.type = 'EdgesGeometry'; + this.parameters = { + thresholdAngle: thresholdAngle + }; + thresholdAngle = thresholdAngle !== undefined ? thresholdAngle : 1; + + if (geometry.isGeometry === true) { + console.error('THREE.EdgesGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + return; + } + + const precisionPoints = 4; + const precision = Math.pow(10, precisionPoints); + const thresholdDot = Math.cos(DEG2RAD * thresholdAngle); + const indexAttr = geometry.getIndex(); + const positionAttr = geometry.getAttribute('position'); + const indexCount = indexAttr ? indexAttr.count : positionAttr.count; + const indexArr = [0, 0, 0]; + const vertKeys = ['a', 'b', 'c']; + const hashes = new Array(3); + const edgeData = {}; + const vertices = []; + + for (let i = 0; i < indexCount; i += 3) { + if (indexAttr) { + indexArr[0] = indexAttr.getX(i); + indexArr[1] = indexAttr.getX(i + 1); + indexArr[2] = indexAttr.getX(i + 2); + } else { + indexArr[0] = i; + indexArr[1] = i + 1; + indexArr[2] = i + 2; + } + + const { + a, + b, + c + } = _triangle; + a.fromBufferAttribute(positionAttr, indexArr[0]); + b.fromBufferAttribute(positionAttr, indexArr[1]); + c.fromBufferAttribute(positionAttr, indexArr[2]); + + _triangle.getNormal(_normal); // create hashes for the edge from the vertices + + + hashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`; + hashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`; + hashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`; // skip degenerate triangles + + if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) { + continue; + } // iterate over every edge + + + for (let j = 0; j < 3; j++) { + // get the first and next vertex making up the edge + const jNext = (j + 1) % 3; + const vecHash0 = hashes[j]; + const vecHash1 = hashes[jNext]; + const v0 = _triangle[vertKeys[j]]; + const v1 = _triangle[vertKeys[jNext]]; + const hash = `${vecHash0}_${vecHash1}`; + const reverseHash = `${vecHash1}_${vecHash0}`; + + if (reverseHash in edgeData && edgeData[reverseHash]) { + // if we found a sibling edge add it into the vertex array if + // it meets the angle threshold and delete the edge from the map. + if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) { + vertices.push(v0.x, v0.y, v0.z); + vertices.push(v1.x, v1.y, v1.z); + } + + edgeData[reverseHash] = null; + } else if (!(hash in edgeData)) { + // if we've already got an edge here then skip adding a new one + edgeData[hash] = { + index0: indexArr[j], + index1: indexArr[jNext], + normal: _normal.clone() + }; + } + } + } // iterate over all remaining, unmatched edges and add them to the vertex array + + + for (const key in edgeData) { + if (edgeData[key]) { + const { + index0, + index1 + } = edgeData[key]; + + _v0.fromBufferAttribute(positionAttr, index0); + + _v1$1.fromBufferAttribute(positionAttr, index1); + + vertices.push(_v0.x, _v0.y, _v0.z); + vertices.push(_v1$1.x, _v1$1.y, _v1$1.z); + } + } + + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + } + + } + + /** + * Extensible curve object. + * + * Some common of curve methods: + * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget ) + * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget ) + * .getPoints(), .getSpacedPoints() + * .getLength() + * .updateArcLengths() + * + * This following curves inherit from THREE.Curve: + * + * -- 2D curves -- + * THREE.ArcCurve + * THREE.CubicBezierCurve + * THREE.EllipseCurve + * THREE.LineCurve + * THREE.QuadraticBezierCurve + * THREE.SplineCurve + * + * -- 3D curves -- + * THREE.CatmullRomCurve3 + * THREE.CubicBezierCurve3 + * THREE.LineCurve3 + * THREE.QuadraticBezierCurve3 + * + * A series of curves can be represented as a THREE.CurvePath. + * + **/ + + class Curve { + constructor() { + this.type = 'Curve'; + this.arcLengthDivisions = 200; + } // Virtual base class method to overwrite and implement in subclasses + // - t [0 .. 1] + + + getPoint() { + console.warn('THREE.Curve: .getPoint() not implemented.'); + return null; + } // Get point at relative position in curve according to arc length + // - u [0 .. 1] + + + getPointAt(u, optionalTarget) { + const t = this.getUtoTmapping(u); + return this.getPoint(t, optionalTarget); + } // Get sequence of points using getPoint( t ) + + + getPoints(divisions = 5) { + const points = []; + + for (let d = 0; d <= divisions; d++) { + points.push(this.getPoint(d / divisions)); + } + + return points; + } // Get sequence of points using getPointAt( u ) + + + getSpacedPoints(divisions = 5) { + const points = []; + + for (let d = 0; d <= divisions; d++) { + points.push(this.getPointAt(d / divisions)); + } + + return points; + } // Get total curve arc length + + + getLength() { + const lengths = this.getLengths(); + return lengths[lengths.length - 1]; + } // Get list of cumulative segment lengths + + + getLengths(divisions = this.arcLengthDivisions) { + if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) { + return this.cacheArcLengths; + } + + this.needsUpdate = false; + const cache = []; + let current, + last = this.getPoint(0); + let sum = 0; + cache.push(0); + + for (let p = 1; p <= divisions; p++) { + current = this.getPoint(p / divisions); + sum += current.distanceTo(last); + cache.push(sum); + last = current; + } + + this.cacheArcLengths = cache; + return cache; // { sums: cache, sum: sum }; Sum is in the last element. + } + + updateArcLengths() { + this.needsUpdate = true; + this.getLengths(); + } // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant + + + getUtoTmapping(u, distance) { + const arcLengths = this.getLengths(); + let i = 0; + const il = arcLengths.length; + let targetArcLength; // The targeted u distance value to get + + if (distance) { + targetArcLength = distance; + } else { + targetArcLength = u * arcLengths[il - 1]; + } // binary search for the index with largest value smaller than target u distance + + + let low = 0, + high = il - 1, + comparison; + + while (low <= high) { + i = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats + + comparison = arcLengths[i] - targetArcLength; + + if (comparison < 0) { + low = i + 1; + } else if (comparison > 0) { + high = i - 1; + } else { + high = i; + break; // DONE + } + } + + i = high; + + if (arcLengths[i] === targetArcLength) { + return i / (il - 1); + } // we could get finer grain at lengths, or use simple interpolation between two points + + + const lengthBefore = arcLengths[i]; + const lengthAfter = arcLengths[i + 1]; + const segmentLength = lengthAfter - lengthBefore; // determine where we are between the 'before' and 'after' points + + const segmentFraction = (targetArcLength - lengthBefore) / segmentLength; // add that fractional amount to t + + const t = (i + segmentFraction) / (il - 1); + return t; + } // Returns a unit vector tangent at t + // In case any sub curve does not implement its tangent derivation, + // 2 points a small delta apart will be used to find its gradient + // which seems to give a reasonable approximation + + + getTangent(t, optionalTarget) { + const delta = 0.0001; + let t1 = t - delta; + let t2 = t + delta; // Capping in case of danger + + if (t1 < 0) t1 = 0; + if (t2 > 1) t2 = 1; + const pt1 = this.getPoint(t1); + const pt2 = this.getPoint(t2); + const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3()); + tangent.copy(pt2).sub(pt1).normalize(); + return tangent; + } + + getTangentAt(u, optionalTarget) { + const t = this.getUtoTmapping(u); + return this.getTangent(t, optionalTarget); + } + + computeFrenetFrames(segments, closed) { + // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf + const normal = new Vector3(); + const tangents = []; + const normals = []; + const binormals = []; + const vec = new Vector3(); + const mat = new Matrix4(); // compute the tangent vectors for each segment on the curve + + for (let i = 0; i <= segments; i++) { + const u = i / segments; + tangents[i] = this.getTangentAt(u, new Vector3()); + tangents[i].normalize(); + } // select an initial normal vector perpendicular to the first tangent vector, + // and in the direction of the minimum tangent xyz component + + + normals[0] = new Vector3(); + binormals[0] = new Vector3(); + let min = Number.MAX_VALUE; + const tx = Math.abs(tangents[0].x); + const ty = Math.abs(tangents[0].y); + const tz = Math.abs(tangents[0].z); + + if (tx <= min) { + min = tx; + normal.set(1, 0, 0); + } + + if (ty <= min) { + min = ty; + normal.set(0, 1, 0); + } + + if (tz <= min) { + normal.set(0, 0, 1); + } + + vec.crossVectors(tangents[0], normal).normalize(); + normals[0].crossVectors(tangents[0], vec); + binormals[0].crossVectors(tangents[0], normals[0]); // compute the slowly-varying normal and binormal vectors for each segment on the curve + + for (let i = 1; i <= segments; i++) { + normals[i] = normals[i - 1].clone(); + binormals[i] = binormals[i - 1].clone(); + vec.crossVectors(tangents[i - 1], tangents[i]); + + if (vec.length() > Number.EPSILON) { + vec.normalize(); + const theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1)); // clamp for floating pt errors + + normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta)); + } + + binormals[i].crossVectors(tangents[i], normals[i]); + } // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same + + + if (closed === true) { + let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1)); + theta /= segments; + + if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) { + theta = -theta; + } + + for (let i = 1; i <= segments; i++) { + // twist a little... + normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i)); + binormals[i].crossVectors(tangents[i], normals[i]); + } + } + + return { + tangents: tangents, + normals: normals, + binormals: binormals + }; + } + + clone() { + return new this.constructor().copy(this); + } + + copy(source) { + this.arcLengthDivisions = source.arcLengthDivisions; + return this; + } + + toJSON() { + const data = { + metadata: { + version: 4.5, + type: 'Curve', + generator: 'Curve.toJSON' + } + }; + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + return data; + } + + fromJSON(json) { + this.arcLengthDivisions = json.arcLengthDivisions; + return this; + } + + } + + class EllipseCurve extends Curve { + constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) { + super(); + this.type = 'EllipseCurve'; + this.aX = aX; + this.aY = aY; + this.xRadius = xRadius; + this.yRadius = yRadius; + this.aStartAngle = aStartAngle; + this.aEndAngle = aEndAngle; + this.aClockwise = aClockwise; + this.aRotation = aRotation; + } + + getPoint(t, optionalTarget) { + const point = optionalTarget || new Vector2(); + const twoPi = Math.PI * 2; + let deltaAngle = this.aEndAngle - this.aStartAngle; + const samePoints = Math.abs(deltaAngle) < Number.EPSILON; // ensures that deltaAngle is 0 .. 2 PI + + while (deltaAngle < 0) deltaAngle += twoPi; + + while (deltaAngle > twoPi) deltaAngle -= twoPi; + + if (deltaAngle < Number.EPSILON) { + if (samePoints) { + deltaAngle = 0; + } else { + deltaAngle = twoPi; + } + } + + if (this.aClockwise === true && !samePoints) { + if (deltaAngle === twoPi) { + deltaAngle = -twoPi; + } else { + deltaAngle = deltaAngle - twoPi; + } + } + + const angle = this.aStartAngle + t * deltaAngle; + let x = this.aX + this.xRadius * Math.cos(angle); + let y = this.aY + this.yRadius * Math.sin(angle); + + if (this.aRotation !== 0) { + const cos = Math.cos(this.aRotation); + const sin = Math.sin(this.aRotation); + const tx = x - this.aX; + const ty = y - this.aY; // Rotate the point about the center of the ellipse. + + x = tx * cos - ty * sin + this.aX; + y = tx * sin + ty * cos + this.aY; + } + + return point.set(x, y); + } + + copy(source) { + super.copy(source); + this.aX = source.aX; + this.aY = source.aY; + this.xRadius = source.xRadius; + this.yRadius = source.yRadius; + this.aStartAngle = source.aStartAngle; + this.aEndAngle = source.aEndAngle; + this.aClockwise = source.aClockwise; + this.aRotation = source.aRotation; + return this; + } + + toJSON() { + const data = super.toJSON(); + data.aX = this.aX; + data.aY = this.aY; + data.xRadius = this.xRadius; + data.yRadius = this.yRadius; + data.aStartAngle = this.aStartAngle; + data.aEndAngle = this.aEndAngle; + data.aClockwise = this.aClockwise; + data.aRotation = this.aRotation; + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.aX = json.aX; + this.aY = json.aY; + this.xRadius = json.xRadius; + this.yRadius = json.yRadius; + this.aStartAngle = json.aStartAngle; + this.aEndAngle = json.aEndAngle; + this.aClockwise = json.aClockwise; + this.aRotation = json.aRotation; + return this; + } + + } + + EllipseCurve.prototype.isEllipseCurve = true; + + class ArcCurve extends EllipseCurve { + constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { + super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise); + this.type = 'ArcCurve'; + } + + } + + ArcCurve.prototype.isArcCurve = true; + + /** + * Centripetal CatmullRom Curve - which is useful for avoiding + * cusps and self-intersections in non-uniform catmull rom curves. + * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf + * + * curve.type accepts centripetal(default), chordal and catmullrom + * curve.tension is used for catmullrom which defaults to 0.5 + */ + + /* + Based on an optimized c++ solution in + - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ + - http://ideone.com/NoEbVM + + This CubicPoly class could be used for reusing some variables and calculations, + but for three.js curve use, it could be possible inlined and flatten into a single function call + which can be placed in CurveUtils. + */ + + function CubicPoly() { + let c0 = 0, + c1 = 0, + c2 = 0, + c3 = 0; + /* + * Compute coefficients for a cubic polynomial + * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 + * such that + * p(0) = x0, p(1) = x1 + * and + * p'(0) = t0, p'(1) = t1. + */ + + function init(x0, x1, t0, t1) { + c0 = x0; + c1 = t0; + c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1; + c3 = 2 * x0 - 2 * x1 + t0 + t1; + } + + return { + initCatmullRom: function (x0, x1, x2, x3, tension) { + init(x1, x2, tension * (x2 - x0), tension * (x3 - x1)); + }, + initNonuniformCatmullRom: function (x0, x1, x2, x3, dt0, dt1, dt2) { + // compute tangents when parameterized in [t1,t2] + let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1; + let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2; // rescale tangents for parametrization in [0,1] + + t1 *= dt1; + t2 *= dt1; + init(x1, x2, t1, t2); + }, + calc: function (t) { + const t2 = t * t; + const t3 = t2 * t; + return c0 + c1 * t + c2 * t2 + c3 * t3; + } + }; + } // + + + const tmp = new Vector3(); + const px = new CubicPoly(), + py = new CubicPoly(), + pz = new CubicPoly(); + + class CatmullRomCurve3 extends Curve { + constructor(points = [], closed = false, curveType = 'centripetal', tension = 0.5) { + super(); + this.type = 'CatmullRomCurve3'; + this.points = points; + this.closed = closed; + this.curveType = curveType; + this.tension = tension; + } + + getPoint(t, optionalTarget = new Vector3()) { + const point = optionalTarget; + const points = this.points; + const l = points.length; + const p = (l - (this.closed ? 0 : 1)) * t; + let intPoint = Math.floor(p); + let weight = p - intPoint; + + if (this.closed) { + intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l; + } else if (weight === 0 && intPoint === l - 1) { + intPoint = l - 2; + weight = 1; + } + + let p0, p3; // 4 points (p1 & p2 defined below) + + if (this.closed || intPoint > 0) { + p0 = points[(intPoint - 1) % l]; + } else { + // extrapolate first point + tmp.subVectors(points[0], points[1]).add(points[0]); + p0 = tmp; + } + + const p1 = points[intPoint % l]; + const p2 = points[(intPoint + 1) % l]; + + if (this.closed || intPoint + 2 < l) { + p3 = points[(intPoint + 2) % l]; + } else { + // extrapolate last point + tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]); + p3 = tmp; + } + + if (this.curveType === 'centripetal' || this.curveType === 'chordal') { + // init Centripetal / Chordal Catmull-Rom + const pow = this.curveType === 'chordal' ? 0.5 : 0.25; + let dt0 = Math.pow(p0.distanceToSquared(p1), pow); + let dt1 = Math.pow(p1.distanceToSquared(p2), pow); + let dt2 = Math.pow(p2.distanceToSquared(p3), pow); // safety check for repeated points + + if (dt1 < 1e-4) dt1 = 1.0; + if (dt0 < 1e-4) dt0 = dt1; + if (dt2 < 1e-4) dt2 = dt1; + px.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2); + py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2); + pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2); + } else if (this.curveType === 'catmullrom') { + px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension); + py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension); + pz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension); + } + + point.set(px.calc(weight), py.calc(weight), pz.calc(weight)); + return point; + } + + copy(source) { + super.copy(source); + this.points = []; + + for (let i = 0, l = source.points.length; i < l; i++) { + const point = source.points[i]; + this.points.push(point.clone()); + } + + this.closed = source.closed; + this.curveType = source.curveType; + this.tension = source.tension; + return this; + } + + toJSON() { + const data = super.toJSON(); + data.points = []; + + for (let i = 0, l = this.points.length; i < l; i++) { + const point = this.points[i]; + data.points.push(point.toArray()); + } + + data.closed = this.closed; + data.curveType = this.curveType; + data.tension = this.tension; + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.points = []; + + for (let i = 0, l = json.points.length; i < l; i++) { + const point = json.points[i]; + this.points.push(new Vector3().fromArray(point)); + } + + this.closed = json.closed; + this.curveType = json.curveType; + this.tension = json.tension; + return this; + } + + } + + CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; + + /** + * Bezier Curves formulas obtained from + * http://en.wikipedia.org/wiki/Bézier_curve + */ + function CatmullRom(t, p0, p1, p2, p3) { + const v0 = (p2 - p0) * 0.5; + const v1 = (p3 - p1) * 0.5; + const t2 = t * t; + const t3 = t * t2; + return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1; + } // + + + function QuadraticBezierP0(t, p) { + const k = 1 - t; + return k * k * p; + } + + function QuadraticBezierP1(t, p) { + return 2 * (1 - t) * t * p; + } + + function QuadraticBezierP2(t, p) { + return t * t * p; + } + + function QuadraticBezier(t, p0, p1, p2) { + return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2); + } // + + + function CubicBezierP0(t, p) { + const k = 1 - t; + return k * k * k * p; + } + + function CubicBezierP1(t, p) { + const k = 1 - t; + return 3 * k * k * t * p; + } + + function CubicBezierP2(t, p) { + return 3 * (1 - t) * t * t * p; + } + + function CubicBezierP3(t, p) { + return t * t * t * p; + } + + function CubicBezier(t, p0, p1, p2, p3) { + return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3); + } + + class CubicBezierCurve extends Curve { + constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) { + super(); + this.type = 'CubicBezierCurve'; + this.v0 = v0; + this.v1 = v1; + this.v2 = v2; + this.v3 = v3; + } + + getPoint(t, optionalTarget = new Vector2()) { + const point = optionalTarget; + const v0 = this.v0, + v1 = this.v1, + v2 = this.v2, + v3 = this.v3; + point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y)); + return point; + } + + copy(source) { + super.copy(source); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + this.v3.copy(source.v3); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + this.v3.fromArray(json.v3); + return this; + } + + } + + CubicBezierCurve.prototype.isCubicBezierCurve = true; + + class CubicBezierCurve3 extends Curve { + constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) { + super(); + this.type = 'CubicBezierCurve3'; + this.v0 = v0; + this.v1 = v1; + this.v2 = v2; + this.v3 = v3; + } + + getPoint(t, optionalTarget = new Vector3()) { + const point = optionalTarget; + const v0 = this.v0, + v1 = this.v1, + v2 = this.v2, + v3 = this.v3; + point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y), CubicBezier(t, v0.z, v1.z, v2.z, v3.z)); + return point; + } + + copy(source) { + super.copy(source); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + this.v3.copy(source.v3); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + this.v3.fromArray(json.v3); + return this; + } + + } + + CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; + + class LineCurve extends Curve { + constructor(v1 = new Vector2(), v2 = new Vector2()) { + super(); + this.type = 'LineCurve'; + this.v1 = v1; + this.v2 = v2; + } + + getPoint(t, optionalTarget = new Vector2()) { + const point = optionalTarget; + + if (t === 1) { + point.copy(this.v2); + } else { + point.copy(this.v2).sub(this.v1); + point.multiplyScalar(t).add(this.v1); + } + + return point; + } // Line curve is linear, so we can overwrite default getPointAt + + + getPointAt(u, optionalTarget) { + return this.getPoint(u, optionalTarget); + } + + getTangent(t, optionalTarget) { + const tangent = optionalTarget || new Vector2(); + tangent.copy(this.v2).sub(this.v1).normalize(); + return tangent; + } + + copy(source) { + super.copy(source); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + return this; + } + + } + + LineCurve.prototype.isLineCurve = true; + + class LineCurve3 extends Curve { + constructor(v1 = new Vector3(), v2 = new Vector3()) { + super(); + this.type = 'LineCurve3'; + this.isLineCurve3 = true; + this.v1 = v1; + this.v2 = v2; + } + + getPoint(t, optionalTarget = new Vector3()) { + const point = optionalTarget; + + if (t === 1) { + point.copy(this.v2); + } else { + point.copy(this.v2).sub(this.v1); + point.multiplyScalar(t).add(this.v1); + } + + return point; + } // Line curve is linear, so we can overwrite default getPointAt + + + getPointAt(u, optionalTarget) { + return this.getPoint(u, optionalTarget); + } + + copy(source) { + super.copy(source); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + return this; + } + + } + + class QuadraticBezierCurve extends Curve { + constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) { + super(); + this.type = 'QuadraticBezierCurve'; + this.v0 = v0; + this.v1 = v1; + this.v2 = v2; + } + + getPoint(t, optionalTarget = new Vector2()) { + const point = optionalTarget; + const v0 = this.v0, + v1 = this.v1, + v2 = this.v2; + point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y)); + return point; + } + + copy(source) { + super.copy(source); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + return this; + } + + } + + QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; + + class QuadraticBezierCurve3 extends Curve { + constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) { + super(); + this.type = 'QuadraticBezierCurve3'; + this.v0 = v0; + this.v1 = v1; + this.v2 = v2; + } + + getPoint(t, optionalTarget = new Vector3()) { + const point = optionalTarget; + const v0 = this.v0, + v1 = this.v1, + v2 = this.v2; + point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y), QuadraticBezier(t, v0.z, v1.z, v2.z)); + return point; + } + + copy(source) { + super.copy(source); + this.v0.copy(source.v0); + this.v1.copy(source.v1); + this.v2.copy(source.v2); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.v0.fromArray(json.v0); + this.v1.fromArray(json.v1); + this.v2.fromArray(json.v2); + return this; + } + + } + + QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; + + class SplineCurve extends Curve { + constructor(points = []) { + super(); + this.type = 'SplineCurve'; + this.points = points; + } + + getPoint(t, optionalTarget = new Vector2()) { + const point = optionalTarget; + const points = this.points; + const p = (points.length - 1) * t; + const intPoint = Math.floor(p); + const weight = p - intPoint; + const p0 = points[intPoint === 0 ? intPoint : intPoint - 1]; + const p1 = points[intPoint]; + const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1]; + const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2]; + point.set(CatmullRom(weight, p0.x, p1.x, p2.x, p3.x), CatmullRom(weight, p0.y, p1.y, p2.y, p3.y)); + return point; + } + + copy(source) { + super.copy(source); + this.points = []; + + for (let i = 0, l = source.points.length; i < l; i++) { + const point = source.points[i]; + this.points.push(point.clone()); + } + + return this; + } + + toJSON() { + const data = super.toJSON(); + data.points = []; + + for (let i = 0, l = this.points.length; i < l; i++) { + const point = this.points[i]; + data.points.push(point.toArray()); + } + + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.points = []; + + for (let i = 0, l = json.points.length; i < l; i++) { + const point = json.points[i]; + this.points.push(new Vector2().fromArray(point)); + } + + return this; + } + + } + + SplineCurve.prototype.isSplineCurve = true; + + var Curves = /*#__PURE__*/Object.freeze({ + __proto__: null, + ArcCurve: ArcCurve, + CatmullRomCurve3: CatmullRomCurve3, + CubicBezierCurve: CubicBezierCurve, + CubicBezierCurve3: CubicBezierCurve3, + EllipseCurve: EllipseCurve, + LineCurve: LineCurve, + LineCurve3: LineCurve3, + QuadraticBezierCurve: QuadraticBezierCurve, + QuadraticBezierCurve3: QuadraticBezierCurve3, + SplineCurve: SplineCurve + }); + + /** + * Port from https://github.com/mapbox/earcut (v2.2.2) + */ + const Earcut = { + triangulate: function (data, holeIndices, dim = 2) { + const hasHoles = holeIndices && holeIndices.length; + const outerLen = hasHoles ? holeIndices[0] * dim : data.length; + let outerNode = linkedList(data, 0, outerLen, dim, true); + const triangles = []; + if (!outerNode || outerNode.next === outerNode.prev) return triangles; + let minX, minY, maxX, maxY, x, y, invSize; + if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim); // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + + if (data.length > 80 * dim) { + minX = maxX = data[0]; + minY = maxY = data[1]; + + for (let i = dim; i < outerLen; i += dim) { + x = data[i]; + y = data[i + 1]; + if (x < minX) minX = x; + if (y < minY) minY = y; + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + } // minX, minY and invSize are later used to transform coords into integers for z-order calculation + + + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 1 / invSize : 0; + } + + earcutLinked(outerNode, triangles, dim, minX, minY, invSize); + return triangles; + } + }; // create a circular doubly linked list from polygon points in the specified winding order + + function linkedList(data, start, end, dim, clockwise) { + let i, last; + + if (clockwise === signedArea(data, start, end, dim) > 0) { + for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last); + } else { + for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last); + } + + if (last && equals(last, last.next)) { + removeNode(last); + last = last.next; + } + + return last; + } // eliminate colinear or duplicate points + + + function filterPoints(start, end) { + if (!start) return start; + if (!end) end = start; + let p = start, + again; + + do { + again = false; + + if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) { + removeNode(p); + p = end = p.prev; + if (p === p.next) break; + again = true; + } else { + p = p.next; + } + } while (again || p !== end); + + return end; + } // main ear slicing loop which triangulates a polygon (given as a linked list) + + + function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { + if (!ear) return; // interlink polygon nodes in z-order + + if (!pass && invSize) indexCurve(ear, minX, minY, invSize); + let stop = ear, + prev, + next; // iterate through ears, slicing them one by one + + while (ear.prev !== ear.next) { + prev = ear.prev; + next = ear.next; + + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { + // cut off the triangle + triangles.push(prev.i / dim); + triangles.push(ear.i / dim); + triangles.push(next.i / dim); + removeNode(ear); // skipping the next vertex leads to less sliver triangles + + ear = next.next; + stop = next.next; + continue; + } + + ear = next; // if we looped through the whole remaining polygon and can't find any more ears + + if (ear === stop) { + // try filtering points and slicing again + if (!pass) { + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); // if this didn't work, try curing all small self-intersections locally + } else if (pass === 1) { + ear = cureLocalIntersections(filterPoints(ear), triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); // as a last resort, try splitting the remaining polygon into two + } else if (pass === 2) { + splitEarcut(ear, triangles, dim, minX, minY, invSize); + } + + break; + } + } + } // check whether a polygon node forms a valid ear with adjacent nodes + + + function isEar(ear) { + const a = ear.prev, + b = ear, + c = ear.next; + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear + // now make sure we don't have other points inside the potential ear + + let p = ear.next.next; + + while (p !== ear.prev) { + if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.next; + } + + return true; + } + + function isEarHashed(ear, minX, minY, invSize) { + const a = ear.prev, + b = ear, + c = ear.next; + if (area(a, b, c) >= 0) return false; // reflex, can't be an ear + // triangle bbox; min & max are calculated like this for speed + + const minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, + minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, + maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, + maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y; // z-order range for the current triangle bbox; + + const minZ = zOrder(minTX, minTY, minX, minY, invSize), + maxZ = zOrder(maxTX, maxTY, minX, minY, invSize); + let p = ear.prevZ, + n = ear.nextZ; // look for points inside the triangle in both directions + + while (p && p.z >= minZ && n && n.z <= maxZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } // look for remaining points in decreasing z-order + + + while (p && p.z >= minZ) { + if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false; + p = p.prevZ; + } // look for remaining points in increasing z-order + + + while (n && n.z <= maxZ) { + if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false; + n = n.nextZ; + } + + return true; + } // go through all polygon nodes and cure small local self-intersections + + + function cureLocalIntersections(start, triangles, dim) { + let p = start; + + do { + const a = p.prev, + b = p.next.next; + + if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + triangles.push(a.i / dim); + triangles.push(p.i / dim); + triangles.push(b.i / dim); // remove two nodes involved + + removeNode(p); + removeNode(p.next); + p = start = b; + } + + p = p.next; + } while (p !== start); + + return filterPoints(p); + } // try splitting polygon into two and triangulate them independently + + + function splitEarcut(start, triangles, dim, minX, minY, invSize) { + // look for a valid diagonal that divides the polygon into two + let a = start; + + do { + let b = a.next.next; + + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + // split the polygon in two by the diagonal + let c = splitPolygon(a, b); // filter colinear points around the cuts + + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); // run earcut on each half + + earcutLinked(a, triangles, dim, minX, minY, invSize); + earcutLinked(c, triangles, dim, minX, minY, invSize); + return; + } + + b = b.next; + } + + a = a.next; + } while (a !== start); + } // link every hole into the outer loop, producing a single-ring polygon without holes + + + function eliminateHoles(data, holeIndices, outerNode, dim) { + const queue = []; + let i, len, start, end, list; + + for (i = 0, len = holeIndices.length; i < len; i++) { + start = holeIndices[i] * dim; + end = i < len - 1 ? holeIndices[i + 1] * dim : data.length; + list = linkedList(data, start, end, dim, false); + if (list === list.next) list.steiner = true; + queue.push(getLeftmost(list)); + } + + queue.sort(compareX); // process holes from left to right + + for (i = 0; i < queue.length; i++) { + eliminateHole(queue[i], outerNode); + outerNode = filterPoints(outerNode, outerNode.next); + } + + return outerNode; + } + + function compareX(a, b) { + return a.x - b.x; + } // find a bridge between vertices that connects hole with an outer ring and and link it + + + function eliminateHole(hole, outerNode) { + outerNode = findHoleBridge(hole, outerNode); + + if (outerNode) { + const b = splitPolygon(outerNode, hole); // filter collinear points around the cuts + + filterPoints(outerNode, outerNode.next); + filterPoints(b, b.next); + } + } // David Eberly's algorithm for finding a bridge between hole and outer polygon + + + function findHoleBridge(hole, outerNode) { + let p = outerNode; + const hx = hole.x; + const hy = hole.y; + let qx = -Infinity, + m; // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + + do { + if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { + const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + + if (x <= hx && x > qx) { + qx = x; + + if (x === hx) { + if (hy === p.y) return p; + if (hy === p.next.y) return p.next; + } + + m = p.x < p.next.x ? p : p.next; + } + } + + p = p.next; + } while (p !== outerNode); + + if (!m) return null; + if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + const stop = m, + mx = m.x, + my = m.y; + let tanMin = Infinity, + tan; + p = m; + + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + tan = Math.abs(hy - p.y) / (hx - p.x); // tangential + + if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) { + m = p; + tanMin = tan; + } + } + + p = p.next; + } while (p !== stop); + + return m; + } // whether sector in vertex m contains sector in vertex p in the same coordinates + + + function sectorContainsSector(m, p) { + return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0; + } // interlink polygon nodes in z-order + + + function indexCurve(start, minX, minY, invSize) { + let p = start; + + do { + if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked(p); + } // Simon Tatham's linked list merge sort algorithm + // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html + + + function sortLinked(list) { + let i, + p, + q, + e, + tail, + numMerges, + pSize, + qSize, + inSize = 1; + + do { + p = list; + list = null; + tail = null; + numMerges = 0; + + while (p) { + numMerges++; + q = p; + pSize = 0; + + for (i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) break; + } + + qSize = inSize; + + while (pSize > 0 || qSize > 0 && q) { + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + + if (tail) tail.nextZ = e;else list = e; + e.prevZ = tail; + tail = e; + } + + p = q; + } + + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + + return list; + } // z-order of a point given coords and inverse of the longer side of data bbox + + + function zOrder(x, y, minX, minY, invSize) { + // coords are transformed into non-negative 15-bit integer range + x = 32767 * (x - minX) * invSize; + y = 32767 * (y - minY) * invSize; + x = (x | x << 8) & 0x00FF00FF; + x = (x | x << 4) & 0x0F0F0F0F; + x = (x | x << 2) & 0x33333333; + x = (x | x << 1) & 0x55555555; + y = (y | y << 8) & 0x00FF00FF; + y = (y | y << 4) & 0x0F0F0F0F; + y = (y | y << 2) & 0x33333333; + y = (y | y << 1) & 0x55555555; + return x | y << 1; + } // find the leftmost node of a polygon ring + + + function getLeftmost(start) { + let p = start, + leftmost = start; + + do { + if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p; + p = p.next; + } while (p !== start); + + return leftmost; + } // check if a point lies within a convex triangle + + + function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0; + } // check if a diagonal between two polygon nodes is valid (lies in polygon interior) + + + function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors + equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case + } // signed area of a triangle + + + function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); + } // check if two points are equal + + + function equals(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; + } // check if two segments intersect + + + function intersects(p1, q1, p2, q2) { + const o1 = sign(area(p1, q1, p2)); + const o2 = sign(area(p1, q1, q2)); + const o3 = sign(area(p2, q2, p1)); + const o4 = sign(area(p2, q2, q1)); + if (o1 !== o2 && o3 !== o4) return true; // general case + + if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1 + + if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1 + + if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2 + + if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2 + + return false; + } // for collinear points p, q, r, check if point q lies on segment pr + + + function onSegment(p, q, r) { + return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y); + } + + function sign(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; + } // check if a polygon diagonal intersects any polygon segments + + + function intersectsPolygon(a, b) { + let p = a; + + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true; + p = p.next; + } while (p !== a); + + return false; + } // check if a polygon diagonal is locally inside the polygon + + + function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; + } // check if the middle point of a polygon diagonal is inside the polygon + + + function middleInside(a, b) { + let p = a, + inside = false; + const px = (a.x + b.x) / 2, + py = (a.y + b.y) / 2; + + do { + if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) inside = !inside; + p = p.next; + } while (p !== a); + + return inside; + } // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; + // if one belongs to the outer ring and another to a hole, it merges it into a single ring + + + function splitPolygon(a, b) { + const a2 = new Node(a.i, a.x, a.y), + b2 = new Node(b.i, b.x, b.y), + an = a.next, + bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; + } // create a node and optionally link it with previous one (in a circular doubly linked list) + + + function insertNode(i, x, y, last) { + const p = new Node(i, x, y); + + if (!last) { + p.prev = p; + p.next = p; + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + + return p; + } + + function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + if (p.prevZ) p.prevZ.nextZ = p.nextZ; + if (p.nextZ) p.nextZ.prevZ = p.prevZ; + } + + function Node(i, x, y) { + // vertex index in coordinates array + this.i = i; // vertex coordinates + + this.x = x; + this.y = y; // previous and next vertex nodes in a polygon ring + + this.prev = null; + this.next = null; // z-order curve value + + this.z = null; // previous and next nodes in z-order + + this.prevZ = null; + this.nextZ = null; // indicates whether this is a steiner point + + this.steiner = false; + } + + function signedArea(data, start, end, dim) { + let sum = 0; + + for (let i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + + return sum; + } + + class ShapeUtils { + // calculate area of the contour polygon + static area(contour) { + const n = contour.length; + let a = 0.0; + + for (let p = n - 1, q = 0; q < n; p = q++) { + a += contour[p].x * contour[q].y - contour[q].x * contour[p].y; + } + + return a * 0.5; + } + + static isClockWise(pts) { + return ShapeUtils.area(pts) < 0; + } + + static triangulateShape(contour, holes) { + const vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] + + const holeIndices = []; // array of hole indices + + const faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] + + removeDupEndPts(contour); + addContour(vertices, contour); // + + let holeIndex = contour.length; + holes.forEach(removeDupEndPts); + + for (let i = 0; i < holes.length; i++) { + holeIndices.push(holeIndex); + holeIndex += holes[i].length; + addContour(vertices, holes[i]); + } // + + + const triangles = Earcut.triangulate(vertices, holeIndices); // + + for (let i = 0; i < triangles.length; i += 3) { + faces.push(triangles.slice(i, i + 3)); + } + + return faces; + } + + } + + function removeDupEndPts(points) { + const l = points.length; + + if (l > 2 && points[l - 1].equals(points[0])) { + points.pop(); + } + } + + function addContour(vertices, contour) { + for (let i = 0; i < contour.length; i++) { + vertices.push(contour[i].x); + vertices.push(contour[i].y); + } + } + + /** + * Creates extruded geometry from a path shape. + * + * parameters = { + * + * curveSegments: , // number of points on the curves + * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too + * depth: , // Depth to extrude the shape + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into the original shape bevel goes + * bevelSize: , // how far from shape outline (including bevelOffset) is bevel + * bevelOffset: , // how far from shape outline does bevel start + * bevelSegments: , // number of bevel layers + * + * extrudePath: // curve to extrude shape along + * + * UVGenerator: // object that provides UV generator functions + * + * } + */ + + class ExtrudeGeometry extends BufferGeometry { + constructor(shapes, options) { + super(); + this.type = 'ExtrudeGeometry'; + this.parameters = { + shapes: shapes, + options: options + }; + shapes = Array.isArray(shapes) ? shapes : [shapes]; + const scope = this; + const verticesArray = []; + const uvArray = []; + + for (let i = 0, l = shapes.length; i < l; i++) { + const shape = shapes[i]; + addShape(shape); + } // build geometry + + + this.setAttribute('position', new Float32BufferAttribute(verticesArray, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvArray, 2)); + this.computeVertexNormals(); // functions + + function addShape(shape) { + const placeholder = []; // options + + const curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; + const steps = options.steps !== undefined ? options.steps : 1; + let depth = options.depth !== undefined ? options.depth : 100; + let bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; + let bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; + let bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; + let bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0; + let bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; + const extrudePath = options.extrudePath; + const uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; // deprecated options + + if (options.amount !== undefined) { + console.warn('THREE.ExtrudeBufferGeometry: amount has been renamed to depth.'); + depth = options.amount; + } // + + + let extrudePts, + extrudeByPath = false; + let splineTube, binormal, normal, position2; + + if (extrudePath) { + extrudePts = extrudePath.getSpacedPoints(steps); + extrudeByPath = true; + bevelEnabled = false; // bevels not supported for path extrusion + // SETUP TNB variables + // TODO1 - have a .isClosed in spline? + + splineTube = extrudePath.computeFrenetFrames(steps, false); // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); + + binormal = new Vector3(); + normal = new Vector3(); + position2 = new Vector3(); + } // Safeguards if bevels are not enabled + + + if (!bevelEnabled) { + bevelSegments = 0; + bevelThickness = 0; + bevelSize = 0; + bevelOffset = 0; + } // Variables initialization + + + const shapePoints = shape.extractPoints(curveSegments); + let vertices = shapePoints.shape; + const holes = shapePoints.holes; + const reverse = !ShapeUtils.isClockWise(vertices); + + if (reverse) { + vertices = vertices.reverse(); // Maybe we should also check if holes are in the opposite direction, just to be safe ... + + for (let h = 0, hl = holes.length; h < hl; h++) { + const ahole = holes[h]; + + if (ShapeUtils.isClockWise(ahole)) { + holes[h] = ahole.reverse(); + } + } + } + + const faces = ShapeUtils.triangulateShape(vertices, holes); + /* Vertices */ + + const contour = vertices; // vertices has all points but contour has only points of circumference + + for (let h = 0, hl = holes.length; h < hl; h++) { + const ahole = holes[h]; + vertices = vertices.concat(ahole); + } + + function scalePt2(pt, vec, size) { + if (!vec) console.error('THREE.ExtrudeGeometry: vec does not exist'); + return vec.clone().multiplyScalar(size).add(pt); + } + + const vlen = vertices.length, + flen = faces.length; // Find directions for point movement + + function getBevelVec(inPt, inPrev, inNext) { + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + let v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + + const v_prev_x = inPt.x - inPrev.x, + v_prev_y = inPt.y - inPrev.y; + const v_next_x = inNext.x - inPt.x, + v_next_y = inNext.y - inPt.y; + const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y; // check for collinear edges + + const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x; + + if (Math.abs(collinear0) > Number.EPSILON) { + // not collinear + // length of vectors for normalizing + const v_prev_len = Math.sqrt(v_prev_lensq); + const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y); // shift adjacent points by unit vectors to the left + + const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len; + const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len; + const ptNextShift_x = inNext.x - v_next_y / v_next_len; + const ptNextShift_y = inNext.y + v_next_x / v_next_len; // scaling factor for v_prev to intersection point + + const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x); // vector from inPt to intersection point + + v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x; + v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y; // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + + const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y; + + if (v_trans_lensq <= 2) { + return new Vector2(v_trans_x, v_trans_y); + } else { + shrink_by = Math.sqrt(v_trans_lensq / 2); + } + } else { + // handle special case of collinear edges + let direction_eq = false; // assumes: opposite + + if (v_prev_x > Number.EPSILON) { + if (v_next_x > Number.EPSILON) { + direction_eq = true; + } + } else { + if (v_prev_x < -Number.EPSILON) { + if (v_next_x < -Number.EPSILON) { + direction_eq = true; + } + } else { + if (Math.sign(v_prev_y) === Math.sign(v_next_y)) { + direction_eq = true; + } + } + } + + if (direction_eq) { + // console.log("Warning: lines are a straight sequence"); + v_trans_x = -v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt(v_prev_lensq); + } else { + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt(v_prev_lensq / 2); + } + } + + return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by); + } + + const contourMovements = []; + + for (let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) { + if (j === il) j = 0; + if (k === il) k = 0; // (j)---(i)---(k) + // console.log('i,j,k', i, j , k) + + contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]); + } + + const holesMovements = []; + let oneHoleMovements, + verticesMovements = contourMovements.concat(); + + for (let h = 0, hl = holes.length; h < hl; h++) { + const ahole = holes[h]; + oneHoleMovements = []; + + for (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) { + if (j === il) j = 0; + if (k === il) k = 0; // (j)---(i)---(k) + + oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]); + } + + holesMovements.push(oneHoleMovements); + verticesMovements = verticesMovements.concat(oneHoleMovements); + } // Loop bevelSegments, 1 for the front, 1 for the back + + + for (let b = 0; b < bevelSegments; b++) { + //for ( b = bevelSegments; b > 0; b -- ) { + const t = b / bevelSegments; + const z = bevelThickness * Math.cos(t * Math.PI / 2); + const bs = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset; // contract shape + + for (let i = 0, il = contour.length; i < il; i++) { + const vert = scalePt2(contour[i], contourMovements[i], bs); + v(vert.x, vert.y, -z); + } // expand holes + + + for (let h = 0, hl = holes.length; h < hl; h++) { + const ahole = holes[h]; + oneHoleMovements = holesMovements[h]; + + for (let i = 0, il = ahole.length; i < il; i++) { + const vert = scalePt2(ahole[i], oneHoleMovements[i], bs); + v(vert.x, vert.y, -z); + } + } + } + + const bs = bevelSize + bevelOffset; // Back facing vertices + + for (let i = 0; i < vlen; i++) { + const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i]; + + if (!extrudeByPath) { + v(vert.x, vert.y, 0); + } else { + // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); + normal.copy(splineTube.normals[0]).multiplyScalar(vert.x); + binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y); + position2.copy(extrudePts[0]).add(normal).add(binormal); + v(position2.x, position2.y, position2.z); + } + } // Add stepped vertices... + // Including front facing vertices + + + for (let s = 1; s <= steps; s++) { + for (let i = 0; i < vlen; i++) { + const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i]; + + if (!extrudeByPath) { + v(vert.x, vert.y, depth / steps * s); + } else { + // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); + normal.copy(splineTube.normals[s]).multiplyScalar(vert.x); + binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y); + position2.copy(extrudePts[s]).add(normal).add(binormal); + v(position2.x, position2.y, position2.z); + } + } + } // Add bevel segments planes + //for ( b = 1; b <= bevelSegments; b ++ ) { + + + for (let b = bevelSegments - 1; b >= 0; b--) { + const t = b / bevelSegments; + const z = bevelThickness * Math.cos(t * Math.PI / 2); + const bs = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset; // contract shape + + for (let i = 0, il = contour.length; i < il; i++) { + const vert = scalePt2(contour[i], contourMovements[i], bs); + v(vert.x, vert.y, depth + z); + } // expand holes + + + for (let h = 0, hl = holes.length; h < hl; h++) { + const ahole = holes[h]; + oneHoleMovements = holesMovements[h]; + + for (let i = 0, il = ahole.length; i < il; i++) { + const vert = scalePt2(ahole[i], oneHoleMovements[i], bs); + + if (!extrudeByPath) { + v(vert.x, vert.y, depth + z); + } else { + v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z); + } + } + } + } + /* Faces */ + // Top and bottom faces + + + buildLidFaces(); // Sides faces + + buildSideFaces(); ///// Internal functions + + function buildLidFaces() { + const start = verticesArray.length / 3; + + if (bevelEnabled) { + let layer = 0; // steps + 1 + + let offset = vlen * layer; // Bottom faces + + for (let i = 0; i < flen; i++) { + const face = faces[i]; + f3(face[2] + offset, face[1] + offset, face[0] + offset); + } + + layer = steps + bevelSegments * 2; + offset = vlen * layer; // Top faces + + for (let i = 0; i < flen; i++) { + const face = faces[i]; + f3(face[0] + offset, face[1] + offset, face[2] + offset); + } + } else { + // Bottom faces + for (let i = 0; i < flen; i++) { + const face = faces[i]; + f3(face[2], face[1], face[0]); + } // Top faces + + + for (let i = 0; i < flen; i++) { + const face = faces[i]; + f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps); + } + } + + scope.addGroup(start, verticesArray.length / 3 - start, 0); + } // Create faces for the z-sides of the shape + + + function buildSideFaces() { + const start = verticesArray.length / 3; + let layeroffset = 0; + sidewalls(contour, layeroffset); + layeroffset += contour.length; + + for (let h = 0, hl = holes.length; h < hl; h++) { + const ahole = holes[h]; + sidewalls(ahole, layeroffset); //, true + + layeroffset += ahole.length; + } + + scope.addGroup(start, verticesArray.length / 3 - start, 1); + } + + function sidewalls(contour, layeroffset) { + let i = contour.length; + + while (--i >= 0) { + const j = i; + let k = i - 1; + if (k < 0) k = contour.length - 1; //console.log('b', i,j, i-1, k,vertices.length); + + for (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) { + const slen1 = vlen * s; + const slen2 = vlen * (s + 1); + const a = layeroffset + j + slen1, + b = layeroffset + k + slen1, + c = layeroffset + k + slen2, + d = layeroffset + j + slen2; + f4(a, b, c, d); + } + } + } + + function v(x, y, z) { + placeholder.push(x); + placeholder.push(y); + placeholder.push(z); + } + + function f3(a, b, c) { + addVertex(a); + addVertex(b); + addVertex(c); + const nextIndex = verticesArray.length / 3; + const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1); + addUV(uvs[0]); + addUV(uvs[1]); + addUV(uvs[2]); + } + + function f4(a, b, c, d) { + addVertex(a); + addVertex(b); + addVertex(d); + addVertex(b); + addVertex(c); + addVertex(d); + const nextIndex = verticesArray.length / 3; + const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1); + addUV(uvs[0]); + addUV(uvs[1]); + addUV(uvs[3]); + addUV(uvs[1]); + addUV(uvs[2]); + addUV(uvs[3]); + } + + function addVertex(index) { + verticesArray.push(placeholder[index * 3 + 0]); + verticesArray.push(placeholder[index * 3 + 1]); + verticesArray.push(placeholder[index * 3 + 2]); + } + + function addUV(vector2) { + uvArray.push(vector2.x); + uvArray.push(vector2.y); + } + } + } + + toJSON() { + const data = super.toJSON(); + const shapes = this.parameters.shapes; + const options = this.parameters.options; + return toJSON$1(shapes, options, data); + } + + static fromJSON(data, shapes) { + const geometryShapes = []; + + for (let j = 0, jl = data.shapes.length; j < jl; j++) { + const shape = shapes[data.shapes[j]]; + geometryShapes.push(shape); + } + + const extrudePath = data.options.extrudePath; + + if (extrudePath !== undefined) { + data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath); + } + + return new ExtrudeGeometry(geometryShapes, data.options); + } + + } + + const WorldUVGenerator = { + generateTopUV: function (geometry, vertices, indexA, indexB, indexC) { + const a_x = vertices[indexA * 3]; + const a_y = vertices[indexA * 3 + 1]; + const b_x = vertices[indexB * 3]; + const b_y = vertices[indexB * 3 + 1]; + const c_x = vertices[indexC * 3]; + const c_y = vertices[indexC * 3 + 1]; + return [new Vector2(a_x, a_y), new Vector2(b_x, b_y), new Vector2(c_x, c_y)]; + }, + generateSideWallUV: function (geometry, vertices, indexA, indexB, indexC, indexD) { + const a_x = vertices[indexA * 3]; + const a_y = vertices[indexA * 3 + 1]; + const a_z = vertices[indexA * 3 + 2]; + const b_x = vertices[indexB * 3]; + const b_y = vertices[indexB * 3 + 1]; + const b_z = vertices[indexB * 3 + 2]; + const c_x = vertices[indexC * 3]; + const c_y = vertices[indexC * 3 + 1]; + const c_z = vertices[indexC * 3 + 2]; + const d_x = vertices[indexD * 3]; + const d_y = vertices[indexD * 3 + 1]; + const d_z = vertices[indexD * 3 + 2]; + + if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) { + return [new Vector2(a_x, 1 - a_z), new Vector2(b_x, 1 - b_z), new Vector2(c_x, 1 - c_z), new Vector2(d_x, 1 - d_z)]; + } else { + return [new Vector2(a_y, 1 - a_z), new Vector2(b_y, 1 - b_z), new Vector2(c_y, 1 - c_z), new Vector2(d_y, 1 - d_z)]; + } + } + }; + + function toJSON$1(shapes, options, data) { + data.shapes = []; + + if (Array.isArray(shapes)) { + for (let i = 0, l = shapes.length; i < l; i++) { + const shape = shapes[i]; + data.shapes.push(shape.uuid); + } + } else { + data.shapes.push(shapes.uuid); + } + + if (options.extrudePath !== undefined) data.options.extrudePath = options.extrudePath.toJSON(); + return data; + } + + class IcosahedronGeometry extends PolyhedronGeometry { + constructor(radius = 1, detail = 0) { + const t = (1 + Math.sqrt(5)) / 2; + const vertices = [-1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, 0, 0, -1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, t, 0, -1, t, 0, 1, -t, 0, -1, -t, 0, 1]; + const indices = [0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1]; + super(vertices, indices, radius, detail); + this.type = 'IcosahedronGeometry'; + this.parameters = { + radius: radius, + detail: detail + }; + } + + static fromJSON(data) { + return new IcosahedronGeometry(data.radius, data.detail); + } + + } + + class LatheGeometry extends BufferGeometry { + constructor(points, segments = 12, phiStart = 0, phiLength = Math.PI * 2) { + super(); + this.type = 'LatheGeometry'; + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + segments = Math.floor(segments); // clamp phiLength so it's in range of [ 0, 2PI ] + + phiLength = clamp(phiLength, 0, Math.PI * 2); // buffers + + const indices = []; + const vertices = []; + const uvs = []; // helper variables + + const inverseSegments = 1.0 / segments; + const vertex = new Vector3(); + const uv = new Vector2(); // generate vertices and uvs + + for (let i = 0; i <= segments; i++) { + const phi = phiStart + i * inverseSegments * phiLength; + const sin = Math.sin(phi); + const cos = Math.cos(phi); + + for (let j = 0; j <= points.length - 1; j++) { + // vertex + vertex.x = points[j].x * sin; + vertex.y = points[j].y; + vertex.z = points[j].x * cos; + vertices.push(vertex.x, vertex.y, vertex.z); // uv + + uv.x = i / segments; + uv.y = j / (points.length - 1); + uvs.push(uv.x, uv.y); + } + } // indices + + + for (let i = 0; i < segments; i++) { + for (let j = 0; j < points.length - 1; j++) { + const base = j + i * points.length; + const a = base; + const b = base + points.length; + const c = base + points.length + 1; + const d = base + 1; // faces + + indices.push(a, b, d); + indices.push(b, c, d); + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // generate normals + + this.computeVertexNormals(); // if the geometry is closed, we need to average the normals along the seam. + // because the corresponding vertices are identical (but still have different UVs). + + if (phiLength === Math.PI * 2) { + const normals = this.attributes.normal.array; + const n1 = new Vector3(); + const n2 = new Vector3(); + const n = new Vector3(); // this is the buffer offset for the last line of vertices + + const base = segments * points.length * 3; + + for (let i = 0, j = 0; i < points.length; i++, j += 3) { + // select the normal of the vertex in the first line + n1.x = normals[j + 0]; + n1.y = normals[j + 1]; + n1.z = normals[j + 2]; // select the normal of the vertex in the last line + + n2.x = normals[base + j + 0]; + n2.y = normals[base + j + 1]; + n2.z = normals[base + j + 2]; // average normals + + n.addVectors(n1, n2).normalize(); // assign the new values to both normals + + normals[j + 0] = normals[base + j + 0] = n.x; + normals[j + 1] = normals[base + j + 1] = n.y; + normals[j + 2] = normals[base + j + 2] = n.z; + } + } + } + + static fromJSON(data) { + return new LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength); + } + + } + + class OctahedronGeometry extends PolyhedronGeometry { + constructor(radius = 1, detail = 0) { + const vertices = [1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1]; + const indices = [0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2]; + super(vertices, indices, radius, detail); + this.type = 'OctahedronGeometry'; + this.parameters = { + radius: radius, + detail: detail + }; + } + + static fromJSON(data) { + return new OctahedronGeometry(data.radius, data.detail); + } + + } + + /** + * Parametric Surfaces Geometry + * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html + */ + + class ParametricGeometry extends BufferGeometry { + constructor(func, slices, stacks) { + super(); + this.type = 'ParametricGeometry'; + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; + const EPS = 0.00001; + const normal = new Vector3(); + const p0 = new Vector3(), + p1 = new Vector3(); + const pu = new Vector3(), + pv = new Vector3(); + + if (func.length < 3) { + console.error('THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.'); + } // generate vertices, normals and uvs + + + const sliceCount = slices + 1; + + for (let i = 0; i <= stacks; i++) { + const v = i / stacks; + + for (let j = 0; j <= slices; j++) { + const u = j / slices; // vertex + + func(u, v, p0); + vertices.push(p0.x, p0.y, p0.z); // normal + // approximate tangent vectors via finite differences + + if (u - EPS >= 0) { + func(u - EPS, v, p1); + pu.subVectors(p0, p1); + } else { + func(u + EPS, v, p1); + pu.subVectors(p1, p0); + } + + if (v - EPS >= 0) { + func(u, v - EPS, p1); + pv.subVectors(p0, p1); + } else { + func(u, v + EPS, p1); + pv.subVectors(p1, p0); + } // cross product of tangent vectors returns surface normal + + + normal.crossVectors(pu, pv).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv + + uvs.push(u, v); + } + } // generate indices + + + for (let i = 0; i < stacks; i++) { + for (let j = 0; j < slices; j++) { + const a = i * sliceCount + j; + const b = i * sliceCount + j + 1; + const c = (i + 1) * sliceCount + j + 1; + const d = (i + 1) * sliceCount + j; // faces one and two + + indices.push(a, b, d); + indices.push(b, c, d); + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + } + + } + + class RingGeometry extends BufferGeometry { + constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) { + super(); + this.type = 'RingGeometry'; + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + thetaSegments = Math.max(3, thetaSegments); + phiSegments = Math.max(1, phiSegments); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // some helper variables + + let radius = innerRadius; + const radiusStep = (outerRadius - innerRadius) / phiSegments; + const vertex = new Vector3(); + const uv = new Vector2(); // generate vertices, normals and uvs + + for (let j = 0; j <= phiSegments; j++) { + for (let i = 0; i <= thetaSegments; i++) { + // values are generate from the inside of the ring to the outside + const segment = thetaStart + i / thetaSegments * thetaLength; // vertex + + vertex.x = radius * Math.cos(segment); + vertex.y = radius * Math.sin(segment); + vertices.push(vertex.x, vertex.y, vertex.z); // normal + + normals.push(0, 0, 1); // uv + + uv.x = (vertex.x / outerRadius + 1) / 2; + uv.y = (vertex.y / outerRadius + 1) / 2; + uvs.push(uv.x, uv.y); + } // increase the radius for next row of vertices + + + radius += radiusStep; + } // indices + + + for (let j = 0; j < phiSegments; j++) { + const thetaSegmentLevel = j * (thetaSegments + 1); + + for (let i = 0; i < thetaSegments; i++) { + const segment = i + thetaSegmentLevel; + const a = segment; + const b = segment + thetaSegments + 1; + const c = segment + thetaSegments + 2; + const d = segment + 1; // faces + + indices.push(a, b, d); + indices.push(b, c, d); + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + } + + static fromJSON(data) { + return new RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength); + } + + } + + class ShapeGeometry extends BufferGeometry { + constructor(shapes, curveSegments = 12) { + super(); + this.type = 'ShapeGeometry'; + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // helper variables + + let groupStart = 0; + let groupCount = 0; // allow single and array values for "shapes" parameter + + if (Array.isArray(shapes) === false) { + addShape(shapes); + } else { + for (let i = 0; i < shapes.length; i++) { + addShape(shapes[i]); + this.addGroup(groupStart, groupCount, i); // enables MultiMaterial support + + groupStart += groupCount; + groupCount = 0; + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // helper functions + + function addShape(shape) { + const indexOffset = vertices.length / 3; + const points = shape.extractPoints(curveSegments); + let shapeVertices = points.shape; + const shapeHoles = points.holes; // check direction of vertices + + if (ShapeUtils.isClockWise(shapeVertices) === false) { + shapeVertices = shapeVertices.reverse(); + } + + for (let i = 0, l = shapeHoles.length; i < l; i++) { + const shapeHole = shapeHoles[i]; + + if (ShapeUtils.isClockWise(shapeHole) === true) { + shapeHoles[i] = shapeHole.reverse(); + } + } + + const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles); // join vertices of inner and outer paths to a single array + + for (let i = 0, l = shapeHoles.length; i < l; i++) { + const shapeHole = shapeHoles[i]; + shapeVertices = shapeVertices.concat(shapeHole); + } // vertices, normals, uvs + + + for (let i = 0, l = shapeVertices.length; i < l; i++) { + const vertex = shapeVertices[i]; + vertices.push(vertex.x, vertex.y, 0); + normals.push(0, 0, 1); + uvs.push(vertex.x, vertex.y); // world uvs + } // incides + + + for (let i = 0, l = faces.length; i < l; i++) { + const face = faces[i]; + const a = face[0] + indexOffset; + const b = face[1] + indexOffset; + const c = face[2] + indexOffset; + indices.push(a, b, c); + groupCount += 3; + } + } + } + + toJSON() { + const data = super.toJSON(); + const shapes = this.parameters.shapes; + return toJSON(shapes, data); + } + + static fromJSON(data, shapes) { + const geometryShapes = []; + + for (let j = 0, jl = data.shapes.length; j < jl; j++) { + const shape = shapes[data.shapes[j]]; + geometryShapes.push(shape); + } + + return new ShapeGeometry(geometryShapes, data.curveSegments); + } + + } + + function toJSON(shapes, data) { + data.shapes = []; + + if (Array.isArray(shapes)) { + for (let i = 0, l = shapes.length; i < l; i++) { + const shape = shapes[i]; + data.shapes.push(shape.uuid); + } + } else { + data.shapes.push(shapes.uuid); + } + + return data; + } + + class SphereGeometry extends BufferGeometry { + constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) { + super(); + this.type = 'SphereGeometry'; + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + widthSegments = Math.max(3, Math.floor(widthSegments)); + heightSegments = Math.max(2, Math.floor(heightSegments)); + const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI); + let index = 0; + const grid = []; + const vertex = new Vector3(); + const normal = new Vector3(); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // generate vertices, normals and uvs + + for (let iy = 0; iy <= heightSegments; iy++) { + const verticesRow = []; + const v = iy / heightSegments; // special case for the poles + + let uOffset = 0; + + if (iy == 0 && thetaStart == 0) { + uOffset = 0.5 / widthSegments; + } else if (iy == heightSegments && thetaEnd == Math.PI) { + uOffset = -0.5 / widthSegments; + } + + for (let ix = 0; ix <= widthSegments; ix++) { + const u = ix / widthSegments; // vertex + + vertex.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength); + vertex.y = radius * Math.cos(thetaStart + v * thetaLength); + vertex.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength); + vertices.push(vertex.x, vertex.y, vertex.z); // normal + + normal.copy(vertex).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv + + uvs.push(u + uOffset, 1 - v); + verticesRow.push(index++); + } + + grid.push(verticesRow); + } // indices + + + for (let iy = 0; iy < heightSegments; iy++) { + for (let ix = 0; ix < widthSegments; ix++) { + const a = grid[iy][ix + 1]; + const b = grid[iy][ix]; + const c = grid[iy + 1][ix]; + const d = grid[iy + 1][ix + 1]; + if (iy !== 0 || thetaStart > 0) indices.push(a, b, d); + if (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b, c, d); + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + } + + static fromJSON(data) { + return new SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength); + } + + } + + class TetrahedronGeometry extends PolyhedronGeometry { + constructor(radius = 1, detail = 0) { + const vertices = [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1]; + const indices = [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1]; + super(vertices, indices, radius, detail); + this.type = 'TetrahedronGeometry'; + this.parameters = { + radius: radius, + detail: detail + }; + } + + static fromJSON(data) { + return new TetrahedronGeometry(data.radius, data.detail); + } + + } + + /** + * Text = 3D Text + * + * parameters = { + * font: , // font + * + * size: , // size of the text + * height: , // thickness to extrude text + * curveSegments: , // number of points on the curves + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into text bevel goes + * bevelSize: , // how far from text outline (including bevelOffset) is bevel + * bevelOffset: // how far from text outline does bevel start + * } + */ + + class TextGeometry extends ExtrudeGeometry { + constructor(text, parameters = {}) { + const font = parameters.font; + + if (!(font && font.isFont)) { + console.error('THREE.TextGeometry: font parameter is not an instance of THREE.Font.'); + return new BufferGeometry(); + } + + const shapes = font.generateShapes(text, parameters.size); // translate parameters to ExtrudeGeometry API + + parameters.depth = parameters.height !== undefined ? parameters.height : 50; // defaults + + if (parameters.bevelThickness === undefined) parameters.bevelThickness = 10; + if (parameters.bevelSize === undefined) parameters.bevelSize = 8; + if (parameters.bevelEnabled === undefined) parameters.bevelEnabled = false; + super(shapes, parameters); + this.type = 'TextGeometry'; + } + + } + + class TorusGeometry extends BufferGeometry { + constructor(radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) { + super(); + this.type = 'TorusGeometry'; + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + radialSegments = Math.floor(radialSegments); + tubularSegments = Math.floor(tubularSegments); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // helper variables + + const center = new Vector3(); + const vertex = new Vector3(); + const normal = new Vector3(); // generate vertices, normals and uvs + + for (let j = 0; j <= radialSegments; j++) { + for (let i = 0; i <= tubularSegments; i++) { + const u = i / tubularSegments * arc; + const v = j / radialSegments * Math.PI * 2; // vertex + + vertex.x = (radius + tube * Math.cos(v)) * Math.cos(u); + vertex.y = (radius + tube * Math.cos(v)) * Math.sin(u); + vertex.z = tube * Math.sin(v); + vertices.push(vertex.x, vertex.y, vertex.z); // normal + + center.x = radius * Math.cos(u); + center.y = radius * Math.sin(u); + normal.subVectors(vertex, center).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv + + uvs.push(i / tubularSegments); + uvs.push(j / radialSegments); + } + } // generate indices + + + for (let j = 1; j <= radialSegments; j++) { + for (let i = 1; i <= tubularSegments; i++) { + // indices + const a = (tubularSegments + 1) * j + i - 1; + const b = (tubularSegments + 1) * (j - 1) + i - 1; + const c = (tubularSegments + 1) * (j - 1) + i; + const d = (tubularSegments + 1) * j + i; // faces + + indices.push(a, b, d); + indices.push(b, c, d); + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); + } + + static fromJSON(data) { + return new TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc); + } + + } + + class TorusKnotGeometry extends BufferGeometry { + constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3) { + super(); + this.type = 'TorusKnotGeometry'; + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + tubularSegments = Math.floor(tubularSegments); + radialSegments = Math.floor(radialSegments); // buffers + + const indices = []; + const vertices = []; + const normals = []; + const uvs = []; // helper variables + + const vertex = new Vector3(); + const normal = new Vector3(); + const P1 = new Vector3(); + const P2 = new Vector3(); + const B = new Vector3(); + const T = new Vector3(); + const N = new Vector3(); // generate vertices, normals and uvs + + for (let i = 0; i <= tubularSegments; ++i) { + // the radian "u" is used to calculate the position on the torus curve of the current tubular segement + const u = i / tubularSegments * p * Math.PI * 2; // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. + // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions + + calculatePositionOnCurve(u, p, q, radius, P1); + calculatePositionOnCurve(u + 0.01, p, q, radius, P2); // calculate orthonormal basis + + T.subVectors(P2, P1); + N.addVectors(P2, P1); + B.crossVectors(T, N); + N.crossVectors(B, T); // normalize B, N. T can be ignored, we don't use it + + B.normalize(); + N.normalize(); + + for (let j = 0; j <= radialSegments; ++j) { + // now calculate the vertices. they are nothing more than an extrusion of the torus curve. + // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. + const v = j / radialSegments * Math.PI * 2; + const cx = -tube * Math.cos(v); + const cy = tube * Math.sin(v); // now calculate the final vertex position. + // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve + + vertex.x = P1.x + (cx * N.x + cy * B.x); + vertex.y = P1.y + (cx * N.y + cy * B.y); + vertex.z = P1.z + (cx * N.z + cy * B.z); + vertices.push(vertex.x, vertex.y, vertex.z); // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) + + normal.subVectors(vertex, P1).normalize(); + normals.push(normal.x, normal.y, normal.z); // uv + + uvs.push(i / tubularSegments); + uvs.push(j / radialSegments); + } + } // generate indices + + + for (let j = 1; j <= tubularSegments; j++) { + for (let i = 1; i <= radialSegments; i++) { + // indices + const a = (radialSegments + 1) * (j - 1) + (i - 1); + const b = (radialSegments + 1) * j + (i - 1); + const c = (radialSegments + 1) * j + i; + const d = (radialSegments + 1) * (j - 1) + i; // faces + + indices.push(a, b, d); + indices.push(b, c, d); + } + } // build geometry + + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // this function calculates the current position on the torus curve + + function calculatePositionOnCurve(u, p, q, radius, position) { + const cu = Math.cos(u); + const su = Math.sin(u); + const quOverP = q / p * u; + const cs = Math.cos(quOverP); + position.x = radius * (2 + cs) * 0.5 * cu; + position.y = radius * (2 + cs) * su * 0.5; + position.z = radius * Math.sin(quOverP) * 0.5; + } + } + + static fromJSON(data) { + return new TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q); + } + + } + + class TubeGeometry extends BufferGeometry { + constructor(path, tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) { + super(); + this.type = 'TubeGeometry'; + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + const frames = path.computeFrenetFrames(tubularSegments, closed); // expose internals + + this.tangents = frames.tangents; + this.normals = frames.normals; + this.binormals = frames.binormals; // helper variables + + const vertex = new Vector3(); + const normal = new Vector3(); + const uv = new Vector2(); + let P = new Vector3(); // buffer + + const vertices = []; + const normals = []; + const uvs = []; + const indices = []; // create buffer data + + generateBufferData(); // build geometry + + this.setIndex(indices); + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + this.setAttribute('normal', new Float32BufferAttribute(normals, 3)); + this.setAttribute('uv', new Float32BufferAttribute(uvs, 2)); // functions + + function generateBufferData() { + for (let i = 0; i < tubularSegments; i++) { + generateSegment(i); + } // if the geometry is not closed, generate the last row of vertices and normals + // at the regular position on the given path + // + // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) + + + generateSegment(closed === false ? tubularSegments : 0); // uvs are generated in a separate function. + // this makes it easy compute correct values for closed geometries + + generateUVs(); // finally create faces + + generateIndices(); + } + + function generateSegment(i) { + // we use getPointAt to sample evenly distributed points from the given path + P = path.getPointAt(i / tubularSegments, P); // retrieve corresponding normal and binormal + + const N = frames.normals[i]; + const B = frames.binormals[i]; // generate normals and vertices for the current segment + + for (let j = 0; j <= radialSegments; j++) { + const v = j / radialSegments * Math.PI * 2; + const sin = Math.sin(v); + const cos = -Math.cos(v); // normal + + normal.x = cos * N.x + sin * B.x; + normal.y = cos * N.y + sin * B.y; + normal.z = cos * N.z + sin * B.z; + normal.normalize(); + normals.push(normal.x, normal.y, normal.z); // vertex + + vertex.x = P.x + radius * normal.x; + vertex.y = P.y + radius * normal.y; + vertex.z = P.z + radius * normal.z; + vertices.push(vertex.x, vertex.y, vertex.z); + } + } + + function generateIndices() { + for (let j = 1; j <= tubularSegments; j++) { + for (let i = 1; i <= radialSegments; i++) { + const a = (radialSegments + 1) * (j - 1) + (i - 1); + const b = (radialSegments + 1) * j + (i - 1); + const c = (radialSegments + 1) * j + i; + const d = (radialSegments + 1) * (j - 1) + i; // faces + + indices.push(a, b, d); + indices.push(b, c, d); + } + } + } + + function generateUVs() { + for (let i = 0; i <= tubularSegments; i++) { + for (let j = 0; j <= radialSegments; j++) { + uv.x = i / tubularSegments; + uv.y = j / radialSegments; + uvs.push(uv.x, uv.y); + } + } + } + } + + toJSON() { + const data = super.toJSON(); + data.path = this.parameters.path.toJSON(); + return data; + } + + static fromJSON(data) { + // This only works for built-in curves (e.g. CatmullRomCurve3). + // User defined curves or instances of CurvePath will not be deserialized. + return new TubeGeometry(new Curves[data.path.type]().fromJSON(data.path), data.tubularSegments, data.radius, data.radialSegments, data.closed); + } + + } + + class WireframeGeometry extends BufferGeometry { + constructor(geometry) { + super(); + this.type = 'WireframeGeometry'; + + if (geometry.isGeometry === true) { + console.error('THREE.WireframeGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.'); + return; + } // buffer + + + const vertices = []; + const edges = new Set(); // helper variables + + const start = new Vector3(); + const end = new Vector3(); + + if (geometry.index !== null) { + // indexed BufferGeometry + const position = geometry.attributes.position; + const indices = geometry.index; + let groups = geometry.groups; + + if (groups.length === 0) { + groups = [{ + start: 0, + count: indices.count, + materialIndex: 0 + }]; + } // create a data structure that contains all eges without duplicates + + + for (let o = 0, ol = groups.length; o < ol; ++o) { + const group = groups[o]; + const groupStart = group.start; + const groupCount = group.count; + + for (let i = groupStart, l = groupStart + groupCount; i < l; i += 3) { + for (let j = 0; j < 3; j++) { + const index1 = indices.getX(i + j); + const index2 = indices.getX(i + (j + 1) % 3); + start.fromBufferAttribute(position, index1); + end.fromBufferAttribute(position, index2); + + if (isUniqueEdge(start, end, edges) === true) { + vertices.push(start.x, start.y, start.z); + vertices.push(end.x, end.y, end.z); + } + } + } + } + } else { + // non-indexed BufferGeometry + const position = geometry.attributes.position; + + for (let i = 0, l = position.count / 3; i < l; i++) { + for (let j = 0; j < 3; j++) { + // three edges per triangle, an edge is represented as (index1, index2) + // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) + const index1 = 3 * i + j; + const index2 = 3 * i + (j + 1) % 3; + start.fromBufferAttribute(position, index1); + end.fromBufferAttribute(position, index2); + + if (isUniqueEdge(start, end, edges) === true) { + vertices.push(start.x, start.y, start.z); + vertices.push(end.x, end.y, end.z); + } + } + } + } // build geometry + + + this.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + } + + } + + function isUniqueEdge(start, end, edges) { + const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`; + const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge + + if (edges.has(hash1) === true || edges.has(hash2) === true) { + return false; + } else { + edges.add(hash1, hash2); + return true; + } + } + + var Geometries = /*#__PURE__*/Object.freeze({ + __proto__: null, + BoxGeometry: BoxGeometry, + BoxBufferGeometry: BoxGeometry, + CircleGeometry: CircleGeometry, + CircleBufferGeometry: CircleGeometry, + ConeGeometry: ConeGeometry, + ConeBufferGeometry: ConeGeometry, + CylinderGeometry: CylinderGeometry, + CylinderBufferGeometry: CylinderGeometry, + DodecahedronGeometry: DodecahedronGeometry, + DodecahedronBufferGeometry: DodecahedronGeometry, + EdgesGeometry: EdgesGeometry, + ExtrudeGeometry: ExtrudeGeometry, + ExtrudeBufferGeometry: ExtrudeGeometry, + IcosahedronGeometry: IcosahedronGeometry, + IcosahedronBufferGeometry: IcosahedronGeometry, + LatheGeometry: LatheGeometry, + LatheBufferGeometry: LatheGeometry, + OctahedronGeometry: OctahedronGeometry, + OctahedronBufferGeometry: OctahedronGeometry, + ParametricGeometry: ParametricGeometry, + ParametricBufferGeometry: ParametricGeometry, + PlaneGeometry: PlaneGeometry, + PlaneBufferGeometry: PlaneGeometry, + PolyhedronGeometry: PolyhedronGeometry, + PolyhedronBufferGeometry: PolyhedronGeometry, + RingGeometry: RingGeometry, + RingBufferGeometry: RingGeometry, + ShapeGeometry: ShapeGeometry, + ShapeBufferGeometry: ShapeGeometry, + SphereGeometry: SphereGeometry, + SphereBufferGeometry: SphereGeometry, + TetrahedronGeometry: TetrahedronGeometry, + TetrahedronBufferGeometry: TetrahedronGeometry, + TextGeometry: TextGeometry, + TextBufferGeometry: TextGeometry, + TorusGeometry: TorusGeometry, + TorusBufferGeometry: TorusGeometry, + TorusKnotGeometry: TorusKnotGeometry, + TorusKnotBufferGeometry: TorusKnotGeometry, + TubeGeometry: TubeGeometry, + TubeBufferGeometry: TubeGeometry, + WireframeGeometry: WireframeGeometry + }); + + /** + * parameters = { + * color: + * } + */ + + class ShadowMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'ShadowMaterial'; + this.color = new Color(0x000000); + this.transparent = true; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + return this; + } + + } + + ShadowMaterial.prototype.isShadowMaterial = true; + + /** + * parameters = { + * color: , + * roughness: , + * metalness: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * roughnessMap: new THREE.Texture( ), + * + * metalnessMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * envMapIntensity: + * + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * flatShading: + * } + */ + + class MeshStandardMaterial extends Material { + constructor(parameters) { + super(); + this.defines = { + 'STANDARD': '' + }; + this.type = 'MeshStandardMaterial'; + this.color = new Color(0xffffff); // diffuse + + this.roughness = 1.0; + this.metalness = 0.0; + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1.0; + this.aoMap = null; + this.aoMapIntensity = 1.0; + this.emissive = new Color(0x000000); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.roughnessMap = null; + this.metalnessMap = null; + this.alphaMap = null; + this.envMap = null; + this.envMapIntensity = 1.0; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + this.flatShading = false; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.defines = { + 'STANDARD': '' + }; + this.color.copy(source.color); + this.roughness = source.roughness; + this.metalness = source.metalness; + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.roughnessMap = source.roughnessMap; + this.metalnessMap = source.metalnessMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.envMapIntensity = source.envMapIntensity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.flatShading = source.flatShading; + return this; + } + + } + + MeshStandardMaterial.prototype.isMeshStandardMaterial = true; + + /** + * parameters = { + * clearcoat: , + * clearcoatMap: new THREE.Texture( ), + * clearcoatRoughness: , + * clearcoatRoughnessMap: new THREE.Texture( ), + * clearcoatNormalScale: , + * clearcoatNormalMap: new THREE.Texture( ), + * + * ior: , + * reflectivity: , + * + * sheenTint: , + * + * transmission: , + * transmissionMap: new THREE.Texture( ), + * + * thickness: , + * thicknessMap: new THREE.Texture( ), + * attenuationDistance: , + * attenuationTint: , + * + * specularIntensity: , + * specularIntensityhMap: new THREE.Texture( ), + * specularTint: , + * specularTintMap: new THREE.Texture( ) + * } + */ + + class MeshPhysicalMaterial extends MeshStandardMaterial { + constructor(parameters) { + super(); + this.defines = { + 'STANDARD': '', + 'PHYSICAL': '' + }; + this.type = 'MeshPhysicalMaterial'; + this.clearcoatMap = null; + this.clearcoatRoughness = 0.0; + this.clearcoatRoughnessMap = null; + this.clearcoatNormalScale = new Vector2(1, 1); + this.clearcoatNormalMap = null; + this.ior = 1.5; + Object.defineProperty(this, 'reflectivity', { + get: function () { + return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1); + }, + set: function (reflectivity) { + this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity); + } + }); + this.sheenTint = new Color(0x000000); + this.transmission = 0.0; + this.transmissionMap = null; + this.thickness = 0.01; + this.thicknessMap = null; + this.attenuationDistance = 0.0; + this.attenuationTint = new Color(1, 1, 1); + this.specularIntensity = 1.0; + this.specularIntensityMap = null; + this.specularTint = new Color(1, 1, 1); + this.specularTintMap = null; + this._clearcoat = 0; + this._transmission = 0; + this.setValues(parameters); + } + + get clearcoat() { + return this._clearcoat; + } + + set clearcoat(value) { + if (this._clearcoat > 0 !== value > 0) { + this.version++; + } + + this._clearcoat = value; + } + + get transmission() { + return this._transmission; + } + + set transmission(value) { + if (this._transmission > 0 !== value > 0) { + this.version++; + } + + this._transmission = value; + } + + copy(source) { + super.copy(source); + this.defines = { + 'STANDARD': '', + 'PHYSICAL': '' + }; + this.clearcoat = source.clearcoat; + this.clearcoatMap = source.clearcoatMap; + this.clearcoatRoughness = source.clearcoatRoughness; + this.clearcoatRoughnessMap = source.clearcoatRoughnessMap; + this.clearcoatNormalMap = source.clearcoatNormalMap; + this.clearcoatNormalScale.copy(source.clearcoatNormalScale); + this.ior = source.ior; + this.sheenTint.copy(source.sheenTint); + this.transmission = source.transmission; + this.transmissionMap = source.transmissionMap; + this.thickness = source.thickness; + this.thicknessMap = source.thicknessMap; + this.attenuationDistance = source.attenuationDistance; + this.attenuationTint.copy(source.attenuationTint); + this.specularIntensity = source.specularIntensity; + this.specularIntensityMap = source.specularIntensityMap; + this.specularTint.copy(source.specularTint); + this.specularTintMap = source.specularTintMap; + return this; + } + + } + + MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; + + /** + * parameters = { + * color: , + * specular: , + * shininess: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.MultiplyOperation, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * flatShading: + * } + */ + + class MeshPhongMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'MeshPhongMaterial'; + this.color = new Color(0xffffff); // diffuse + + this.specular = new Color(0x111111); + this.shininess = 30; + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1.0; + this.aoMap = null; + this.aoMapIntensity = 1.0; + this.emissive = new Color(0x000000); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + this.flatShading = false; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.specular.copy(source.specular); + this.shininess = source.shininess; + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + this.flatShading = source.flatShading; + return this; + } + + } + + MeshPhongMaterial.prototype.isMeshPhongMaterial = true; + + /** + * parameters = { + * color: , + * + * map: new THREE.Texture( ), + * gradientMap: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * alphaMap: new THREE.Texture( ), + * + * wireframe: , + * wireframeLinewidth: , + * + * } + */ + + class MeshToonMaterial extends Material { + constructor(parameters) { + super(); + this.defines = { + 'TOON': '' + }; + this.type = 'MeshToonMaterial'; + this.color = new Color(0xffffff); + this.map = null; + this.gradientMap = null; + this.lightMap = null; + this.lightMapIntensity = 1.0; + this.aoMap = null; + this.aoMapIntensity = 1.0; + this.emissive = new Color(0x000000); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.alphaMap = null; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.gradientMap = source.gradientMap; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.alphaMap = source.alphaMap; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + return this; + } + + } + + MeshToonMaterial.prototype.isMeshToonMaterial = true; + + /** + * parameters = { + * opacity: , + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * + * flatShading: + * } + */ + + class MeshNormalMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'MeshNormalMaterial'; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.fog = false; + this.flatShading = false; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.flatShading = source.flatShading; + return this; + } + + } + + MeshNormalMaterial.prototype.isMeshNormalMaterial = true; + + /** + * parameters = { + * color: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * } + */ + + class MeshLambertMaterial extends Material { + constructor(parameters) { + super(); + this.type = 'MeshLambertMaterial'; + this.color = new Color(0xffffff); // diffuse + + this.map = null; + this.lightMap = null; + this.lightMapIntensity = 1.0; + this.aoMap = null; + this.aoMapIntensity = 1.0; + this.emissive = new Color(0x000000); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + this.specularMap = null; + this.alphaMap = null; + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.map = source.map; + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + this.emissive.copy(source.emissive); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + this.specularMap = source.specularMap; + this.alphaMap = source.alphaMap; + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + return this; + } + + } + + MeshLambertMaterial.prototype.isMeshLambertMaterial = true; + + /** + * parameters = { + * color: , + * opacity: , + * + * matcap: new THREE.Texture( ), + * + * map: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * alphaMap: new THREE.Texture( ), + * + * flatShading: + * } + */ + + class MeshMatcapMaterial extends Material { + constructor(parameters) { + super(); + this.defines = { + 'MATCAP': '' + }; + this.type = 'MeshMatcapMaterial'; + this.color = new Color(0xffffff); // diffuse + + this.matcap = null; + this.map = null; + this.bumpMap = null; + this.bumpScale = 1; + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2(1, 1); + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + this.alphaMap = null; + this.flatShading = false; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.defines = { + 'MATCAP': '' + }; + this.color.copy(source.color); + this.matcap = source.matcap; + this.map = source.map; + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy(source.normalScale); + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + this.alphaMap = source.alphaMap; + this.flatShading = source.flatShading; + return this; + } + + } + + MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; + + /** + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * + * scale: , + * dashSize: , + * gapSize: + * } + */ + + class LineDashedMaterial extends LineBasicMaterial { + constructor(parameters) { + super(); + this.type = 'LineDashedMaterial'; + this.scale = 1; + this.dashSize = 3; + this.gapSize = 1; + this.setValues(parameters); + } + + copy(source) { + super.copy(source); + this.scale = source.scale; + this.dashSize = source.dashSize; + this.gapSize = source.gapSize; + return this; + } + + } + + LineDashedMaterial.prototype.isLineDashedMaterial = true; + + var Materials = /*#__PURE__*/Object.freeze({ + __proto__: null, + ShadowMaterial: ShadowMaterial, + SpriteMaterial: SpriteMaterial, + RawShaderMaterial: RawShaderMaterial, + ShaderMaterial: ShaderMaterial, + PointsMaterial: PointsMaterial, + MeshPhysicalMaterial: MeshPhysicalMaterial, + MeshStandardMaterial: MeshStandardMaterial, + MeshPhongMaterial: MeshPhongMaterial, + MeshToonMaterial: MeshToonMaterial, + MeshNormalMaterial: MeshNormalMaterial, + MeshLambertMaterial: MeshLambertMaterial, + MeshDepthMaterial: MeshDepthMaterial, + MeshDistanceMaterial: MeshDistanceMaterial, + MeshBasicMaterial: MeshBasicMaterial, + MeshMatcapMaterial: MeshMatcapMaterial, + LineDashedMaterial: LineDashedMaterial, + LineBasicMaterial: LineBasicMaterial, + Material: Material + }); + + const AnimationUtils = { + // same as Array.prototype.slice, but also works on typed arrays + arraySlice: function (array, from, to) { + if (AnimationUtils.isTypedArray(array)) { + // in ios9 array.subarray(from, undefined) will return empty array + // but array.subarray(from) or array.subarray(from, len) is correct + return new array.constructor(array.subarray(from, to !== undefined ? to : array.length)); + } + + return array.slice(from, to); + }, + // converts an array to a specific type + convertArray: function (array, type, forceClone) { + if (!array || // let 'undefined' and 'null' pass + !forceClone && array.constructor === type) return array; + + if (typeof type.BYTES_PER_ELEMENT === 'number') { + return new type(array); // create typed array + } + + return Array.prototype.slice.call(array); // create Array + }, + isTypedArray: function (object) { + return ArrayBuffer.isView(object) && !(object instanceof DataView); + }, + // returns an array by which times and values can be sorted + getKeyframeOrder: function (times) { + function compareTime(i, j) { + return times[i] - times[j]; + } + + const n = times.length; + const result = new Array(n); + + for (let i = 0; i !== n; ++i) result[i] = i; + + result.sort(compareTime); + return result; + }, + // uses the array previously returned by 'getKeyframeOrder' to sort data + sortedArray: function (values, stride, order) { + const nValues = values.length; + const result = new values.constructor(nValues); + + for (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) { + const srcOffset = order[i] * stride; + + for (let j = 0; j !== stride; ++j) { + result[dstOffset++] = values[srcOffset + j]; + } + } + + return result; + }, + // function for parsing AOS keyframe formats + flattenJSON: function (jsonKeys, times, values, valuePropertyName) { + let i = 1, + key = jsonKeys[0]; + + while (key !== undefined && key[valuePropertyName] === undefined) { + key = jsonKeys[i++]; + } + + if (key === undefined) return; // no data + + let value = key[valuePropertyName]; + if (value === undefined) return; // no data + + if (Array.isArray(value)) { + do { + value = key[valuePropertyName]; + + if (value !== undefined) { + times.push(key.time); + values.push.apply(values, value); // push all elements + } + + key = jsonKeys[i++]; + } while (key !== undefined); + } else if (value.toArray !== undefined) { + // ...assume THREE.Math-ish + do { + value = key[valuePropertyName]; + + if (value !== undefined) { + times.push(key.time); + value.toArray(values, values.length); + } + + key = jsonKeys[i++]; + } while (key !== undefined); + } else { + // otherwise push as-is + do { + value = key[valuePropertyName]; + + if (value !== undefined) { + times.push(key.time); + values.push(value); + } + + key = jsonKeys[i++]; + } while (key !== undefined); + } + }, + subclip: function (sourceClip, name, startFrame, endFrame, fps = 30) { + const clip = sourceClip.clone(); + clip.name = name; + const tracks = []; + + for (let i = 0; i < clip.tracks.length; ++i) { + const track = clip.tracks[i]; + const valueSize = track.getValueSize(); + const times = []; + const values = []; + + for (let j = 0; j < track.times.length; ++j) { + const frame = track.times[j] * fps; + if (frame < startFrame || frame >= endFrame) continue; + times.push(track.times[j]); + + for (let k = 0; k < valueSize; ++k) { + values.push(track.values[j * valueSize + k]); + } + } + + if (times.length === 0) continue; + track.times = AnimationUtils.convertArray(times, track.times.constructor); + track.values = AnimationUtils.convertArray(values, track.values.constructor); + tracks.push(track); + } + + clip.tracks = tracks; // find minimum .times value across all tracks in the trimmed clip + + let minStartTime = Infinity; + + for (let i = 0; i < clip.tracks.length; ++i) { + if (minStartTime > clip.tracks[i].times[0]) { + minStartTime = clip.tracks[i].times[0]; + } + } // shift all tracks such that clip begins at t=0 + + + for (let i = 0; i < clip.tracks.length; ++i) { + clip.tracks[i].shift(-1 * minStartTime); + } + + clip.resetDuration(); + return clip; + }, + makeClipAdditive: function (targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) { + if (fps <= 0) fps = 30; + const numTracks = referenceClip.tracks.length; + const referenceTime = referenceFrame / fps; // Make each track's values relative to the values at the reference frame + + for (let i = 0; i < numTracks; ++i) { + const referenceTrack = referenceClip.tracks[i]; + const referenceTrackType = referenceTrack.ValueTypeName; // Skip this track if it's non-numeric + + if (referenceTrackType === 'bool' || referenceTrackType === 'string') continue; // Find the track in the target clip whose name and type matches the reference track + + const targetTrack = targetClip.tracks.find(function (track) { + return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType; + }); + if (targetTrack === undefined) continue; + let referenceOffset = 0; + const referenceValueSize = referenceTrack.getValueSize(); + + if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) { + referenceOffset = referenceValueSize / 3; + } + + let targetOffset = 0; + const targetValueSize = targetTrack.getValueSize(); + + if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) { + targetOffset = targetValueSize / 3; + } + + const lastIndex = referenceTrack.times.length - 1; + let referenceValue; // Find the value to subtract out of the track + + if (referenceTime <= referenceTrack.times[0]) { + // Reference frame is earlier than the first keyframe, so just use the first keyframe + const startIndex = referenceOffset; + const endIndex = referenceValueSize - referenceOffset; + referenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex); + } else if (referenceTime >= referenceTrack.times[lastIndex]) { + // Reference frame is after the last keyframe, so just use the last keyframe + const startIndex = lastIndex * referenceValueSize + referenceOffset; + const endIndex = startIndex + referenceValueSize - referenceOffset; + referenceValue = AnimationUtils.arraySlice(referenceTrack.values, startIndex, endIndex); + } else { + // Interpolate to the reference value + const interpolant = referenceTrack.createInterpolant(); + const startIndex = referenceOffset; + const endIndex = referenceValueSize - referenceOffset; + interpolant.evaluate(referenceTime); + referenceValue = AnimationUtils.arraySlice(interpolant.resultBuffer, startIndex, endIndex); + } // Conjugate the quaternion + + + if (referenceTrackType === 'quaternion') { + const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate(); + referenceQuat.toArray(referenceValue); + } // Subtract the reference value from all of the track values + + + const numTimes = targetTrack.times.length; + + for (let j = 0; j < numTimes; ++j) { + const valueStart = j * targetValueSize + targetOffset; + + if (referenceTrackType === 'quaternion') { + // Multiply the conjugate for quaternion track types + Quaternion.multiplyQuaternionsFlat(targetTrack.values, valueStart, referenceValue, 0, targetTrack.values, valueStart); + } else { + const valueEnd = targetValueSize - targetOffset * 2; // Subtract each value for all other numeric track types + + for (let k = 0; k < valueEnd; ++k) { + targetTrack.values[valueStart + k] -= referenceValue[k]; + } + } + } + } + + targetClip.blendMode = AdditiveAnimationBlendMode; + return targetClip; + } + }; + + /** + * Abstract base class of interpolants over parametric samples. + * + * The parameter domain is one dimensional, typically the time or a path + * along a curve defined by the data. + * + * The sample values can have any dimensionality and derived classes may + * apply special interpretations to the data. + * + * This class provides the interval seek in a Template Method, deferring + * the actual interpolation to derived classes. + * + * Time complexity is O(1) for linear access crossing at most two points + * and O(log N) for random access, where N is the number of positions. + * + * References: + * + * http://www.oodesign.com/template-method-pattern.html + * + */ + class Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + this.parameterPositions = parameterPositions; + this._cachedIndex = 0; + this.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor(sampleSize); + this.sampleValues = sampleValues; + this.valueSize = sampleSize; + this.settings = null; + this.DefaultSettings_ = {}; + } + + evaluate(t) { + const pp = this.parameterPositions; + let i1 = this._cachedIndex, + t1 = pp[i1], + t0 = pp[i1 - 1]; + + validate_interval: { + seek: { + let right; + + linear_scan: { + //- See http://jsperf.com/comparison-to-undefined/3 + //- slower code: + //- + //- if ( t >= t1 || t1 === undefined ) { + forward_scan: if (!(t < t1)) { + for (let giveUpAt = i1 + 2;;) { + if (t1 === undefined) { + if (t < t0) break forward_scan; // after end + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_(i1 - 1, t, t0); + } + + if (i1 === giveUpAt) break; // this loop + + t0 = t1; + t1 = pp[++i1]; + + if (t < t1) { + // we have arrived at the sought interval + break seek; + } + } // prepare binary search on the right side of the index + + + right = pp.length; + break linear_scan; + } //- slower code: + //- if ( t < t0 || t0 === undefined ) { + + + if (!(t >= t0)) { + // looping? + const t1global = pp[1]; + + if (t < t1global) { + i1 = 2; // + 1, using the scan for the details + + t0 = t1global; + } // linear reverse scan + + + for (let giveUpAt = i1 - 2;;) { + if (t0 === undefined) { + // before start + this._cachedIndex = 0; + return this.beforeStart_(0, t, t1); + } + + if (i1 === giveUpAt) break; // this loop + + t1 = t0; + t0 = pp[--i1 - 1]; + + if (t >= t0) { + // we have arrived at the sought interval + break seek; + } + } // prepare binary search on the left side of the index + + + right = i1; + i1 = 0; + break linear_scan; + } // the interval is valid + + + break validate_interval; + } // linear scan + // binary search + + + while (i1 < right) { + const mid = i1 + right >>> 1; + + if (t < pp[mid]) { + right = mid; + } else { + i1 = mid + 1; + } + } + + t1 = pp[i1]; + t0 = pp[i1 - 1]; // check boundary cases, again + + if (t0 === undefined) { + this._cachedIndex = 0; + return this.beforeStart_(0, t, t1); + } + + if (t1 === undefined) { + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_(i1 - 1, t0, t); + } + } // seek + + + this._cachedIndex = i1; + this.intervalChanged_(i1, t0, t1); + } // validate_interval + + + return this.interpolate_(i1, t0, t, t1); + } + + getSettings_() { + return this.settings || this.DefaultSettings_; + } + + copySampleValue_(index) { + // copies a sample value to the result buffer + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset = index * stride; + + for (let i = 0; i !== stride; ++i) { + result[i] = values[offset + i]; + } + + return result; + } // Template methods for derived classes: + + + interpolate_() { + throw new Error('call to abstract method'); // implementations shall return this.resultBuffer + } + + intervalChanged_() {// empty + } + + } // ALIAS DEFINITIONS + + + Interpolant.prototype.beforeStart_ = Interpolant.prototype.copySampleValue_; + Interpolant.prototype.afterEnd_ = Interpolant.prototype.copySampleValue_; + + /** + * Fast and simple cubic spline interpolant. + * + * It was derived from a Hermitian construction setting the first derivative + * at each sample position to the linear slope between neighboring positions + * over their parameter interval. + */ + + class CubicInterpolant extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + this._weightPrev = -0; + this._offsetPrev = -0; + this._weightNext = -0; + this._offsetNext = -0; + this.DefaultSettings_ = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + } + + intervalChanged_(i1, t0, t1) { + const pp = this.parameterPositions; + let iPrev = i1 - 2, + iNext = i1 + 1, + tPrev = pp[iPrev], + tNext = pp[iNext]; + + if (tPrev === undefined) { + switch (this.getSettings_().endingStart) { + case ZeroSlopeEnding: + // f'(t0) = 0 + iPrev = i1; + tPrev = 2 * t0 - t1; + break; + + case WrapAroundEnding: + // use the other end of the curve + iPrev = pp.length - 2; + tPrev = t0 + pp[iPrev] - pp[iPrev + 1]; + break; + + default: + // ZeroCurvatureEnding + // f''(t0) = 0 a.k.a. Natural Spline + iPrev = i1; + tPrev = t1; + } + } + + if (tNext === undefined) { + switch (this.getSettings_().endingEnd) { + case ZeroSlopeEnding: + // f'(tN) = 0 + iNext = i1; + tNext = 2 * t1 - t0; + break; + + case WrapAroundEnding: + // use the other end of the curve + iNext = 1; + tNext = t1 + pp[1] - pp[0]; + break; + + default: + // ZeroCurvatureEnding + // f''(tN) = 0, a.k.a. Natural Spline + iNext = i1 - 1; + tNext = t0; + } + } + + const halfDt = (t1 - t0) * 0.5, + stride = this.valueSize; + this._weightPrev = halfDt / (t0 - tPrev); + this._weightNext = halfDt / (tNext - t1); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + } + + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + o1 = i1 * stride, + o0 = o1 - stride, + oP = this._offsetPrev, + oN = this._offsetNext, + wP = this._weightPrev, + wN = this._weightNext, + p = (t - t0) / (t1 - t0), + pp = p * p, + ppp = pp * p; // evaluate polynomials + + const sP = -wP * ppp + 2 * wP * pp - wP * p; + const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1; + const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p; + const sN = wN * ppp - wN * pp; // combine data linearly + + for (let i = 0; i !== stride; ++i) { + result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i]; + } + + return result; + } + + } + + class LinearInterpolant extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset1 = i1 * stride, + offset0 = offset1 - stride, + weight1 = (t - t0) / (t1 - t0), + weight0 = 1 - weight1; + + for (let i = 0; i !== stride; ++i) { + result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1; + } + + return result; + } + + } + + /** + * + * Interpolant that evaluates to the sample value at the position preceeding + * the parameter. + */ + + class DiscreteInterpolant extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + + interpolate_(i1 + /*, t0, t, t1 */ + ) { + return this.copySampleValue_(i1 - 1); + } + + } + + class KeyframeTrack { + constructor(name, times, values, interpolation) { + if (name === undefined) throw new Error('THREE.KeyframeTrack: track name is undefined'); + if (times === undefined || times.length === 0) throw new Error('THREE.KeyframeTrack: no keyframes in track named ' + name); + this.name = name; + this.times = AnimationUtils.convertArray(times, this.TimeBufferType); + this.values = AnimationUtils.convertArray(values, this.ValueBufferType); + this.setInterpolation(interpolation || this.DefaultInterpolation); + } // Serialization (in static context, because of constructor invocation + // and automatic invocation of .toJSON): + + + static toJSON(track) { + const trackType = track.constructor; + let json; // derived classes can define a static toJSON method + + if (trackType.toJSON !== this.toJSON) { + json = trackType.toJSON(track); + } else { + // by default, we assume the data can be serialized as-is + json = { + 'name': track.name, + 'times': AnimationUtils.convertArray(track.times, Array), + 'values': AnimationUtils.convertArray(track.values, Array) + }; + const interpolation = track.getInterpolation(); + + if (interpolation !== track.DefaultInterpolation) { + json.interpolation = interpolation; + } + } + + json.type = track.ValueTypeName; // mandatory + + return json; + } + + InterpolantFactoryMethodDiscrete(result) { + return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result); + } + + InterpolantFactoryMethodLinear(result) { + return new LinearInterpolant(this.times, this.values, this.getValueSize(), result); + } + + InterpolantFactoryMethodSmooth(result) { + return new CubicInterpolant(this.times, this.values, this.getValueSize(), result); + } + + setInterpolation(interpolation) { + let factoryMethod; + + switch (interpolation) { + case InterpolateDiscrete: + factoryMethod = this.InterpolantFactoryMethodDiscrete; + break; + + case InterpolateLinear: + factoryMethod = this.InterpolantFactoryMethodLinear; + break; + + case InterpolateSmooth: + factoryMethod = this.InterpolantFactoryMethodSmooth; + break; + } + + if (factoryMethod === undefined) { + const message = 'unsupported interpolation for ' + this.ValueTypeName + ' keyframe track named ' + this.name; + + if (this.createInterpolant === undefined) { + // fall back to default, unless the default itself is messed up + if (interpolation !== this.DefaultInterpolation) { + this.setInterpolation(this.DefaultInterpolation); + } else { + throw new Error(message); // fatal, in this case + } + } + + console.warn('THREE.KeyframeTrack:', message); + return this; + } + + this.createInterpolant = factoryMethod; + return this; + } + + getInterpolation() { + switch (this.createInterpolant) { + case this.InterpolantFactoryMethodDiscrete: + return InterpolateDiscrete; + + case this.InterpolantFactoryMethodLinear: + return InterpolateLinear; + + case this.InterpolantFactoryMethodSmooth: + return InterpolateSmooth; + } + } + + getValueSize() { + return this.values.length / this.times.length; + } // move all keyframes either forwards or backwards in time + + + shift(timeOffset) { + if (timeOffset !== 0.0) { + const times = this.times; + + for (let i = 0, n = times.length; i !== n; ++i) { + times[i] += timeOffset; + } + } + + return this; + } // scale all keyframe times by a factor (useful for frame <-> seconds conversions) + + + scale(timeScale) { + if (timeScale !== 1.0) { + const times = this.times; + + for (let i = 0, n = times.length; i !== n; ++i) { + times[i] *= timeScale; + } + } + + return this; + } // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. + // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values + + + trim(startTime, endTime) { + const times = this.times, + nKeys = times.length; + let from = 0, + to = nKeys - 1; + + while (from !== nKeys && times[from] < startTime) { + ++from; + } + + while (to !== -1 && times[to] > endTime) { + --to; + } + + ++to; // inclusive -> exclusive bound + + if (from !== 0 || to !== nKeys) { + // empty tracks are forbidden, so keep at least one keyframe + if (from >= to) { + to = Math.max(to, 1); + from = to - 1; + } + + const stride = this.getValueSize(); + this.times = AnimationUtils.arraySlice(times, from, to); + this.values = AnimationUtils.arraySlice(this.values, from * stride, to * stride); + } + + return this; + } // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable + + + validate() { + let valid = true; + const valueSize = this.getValueSize(); + + if (valueSize - Math.floor(valueSize) !== 0) { + console.error('THREE.KeyframeTrack: Invalid value size in track.', this); + valid = false; + } + + const times = this.times, + values = this.values, + nKeys = times.length; + + if (nKeys === 0) { + console.error('THREE.KeyframeTrack: Track is empty.', this); + valid = false; + } + + let prevTime = null; + + for (let i = 0; i !== nKeys; i++) { + const currTime = times[i]; + + if (typeof currTime === 'number' && isNaN(currTime)) { + console.error('THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime); + valid = false; + break; + } + + if (prevTime !== null && prevTime > currTime) { + console.error('THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime); + valid = false; + break; + } + + prevTime = currTime; + } + + if (values !== undefined) { + if (AnimationUtils.isTypedArray(values)) { + for (let i = 0, n = values.length; i !== n; ++i) { + const value = values[i]; + + if (isNaN(value)) { + console.error('THREE.KeyframeTrack: Value is not a valid number.', this, i, value); + valid = false; + break; + } + } + } + } + + return valid; + } // removes equivalent sequential keys as common in morph target sequences + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + + + optimize() { + // times or values may be shared with other tracks, so overwriting is unsafe + const times = AnimationUtils.arraySlice(this.times), + values = AnimationUtils.arraySlice(this.values), + stride = this.getValueSize(), + smoothInterpolation = this.getInterpolation() === InterpolateSmooth, + lastIndex = times.length - 1; + let writeIndex = 1; + + for (let i = 1; i < lastIndex; ++i) { + let keep = false; + const time = times[i]; + const timeNext = times[i + 1]; // remove adjacent keyframes scheduled at the same time + + if (time !== timeNext && (i !== 1 || time !== times[0])) { + if (!smoothInterpolation) { + // remove unnecessary keyframes same as their neighbors + const offset = i * stride, + offsetP = offset - stride, + offsetN = offset + stride; + + for (let j = 0; j !== stride; ++j) { + const value = values[offset + j]; + + if (value !== values[offsetP + j] || value !== values[offsetN + j]) { + keep = true; + break; + } + } + } else { + keep = true; + } + } // in-place compaction + + + if (keep) { + if (i !== writeIndex) { + times[writeIndex] = times[i]; + const readOffset = i * stride, + writeOffset = writeIndex * stride; + + for (let j = 0; j !== stride; ++j) { + values[writeOffset + j] = values[readOffset + j]; + } + } + + ++writeIndex; + } + } // flush last keyframe (compaction looks ahead) + + + if (lastIndex > 0) { + times[writeIndex] = times[lastIndex]; + + for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) { + values[writeOffset + j] = values[readOffset + j]; + } + + ++writeIndex; + } + + if (writeIndex !== times.length) { + this.times = AnimationUtils.arraySlice(times, 0, writeIndex); + this.values = AnimationUtils.arraySlice(values, 0, writeIndex * stride); + } else { + this.times = times; + this.values = values; + } + + return this; + } + + clone() { + const times = AnimationUtils.arraySlice(this.times, 0); + const values = AnimationUtils.arraySlice(this.values, 0); + const TypedKeyframeTrack = this.constructor; + const track = new TypedKeyframeTrack(this.name, times, values); // Interpolant argument to constructor is not saved, so copy the factory method directly. + + track.createInterpolant = this.createInterpolant; + return track; + } + + } + + KeyframeTrack.prototype.TimeBufferType = Float32Array; + KeyframeTrack.prototype.ValueBufferType = Float32Array; + KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear; + + /** + * A Track of Boolean keyframe values. + */ + + class BooleanKeyframeTrack extends KeyframeTrack {} + + BooleanKeyframeTrack.prototype.ValueTypeName = 'bool'; + BooleanKeyframeTrack.prototype.ValueBufferType = Array; + BooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete; + BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined; + BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; // Note: Actually this track could have a optimized / compressed + + /** + * A Track of keyframe values that represent color. + */ + + class ColorKeyframeTrack extends KeyframeTrack {} + + ColorKeyframeTrack.prototype.ValueTypeName = 'color'; // ValueBufferType is inherited + + /** + * A Track of numeric keyframe values. + */ + + class NumberKeyframeTrack extends KeyframeTrack {} + + NumberKeyframeTrack.prototype.ValueTypeName = 'number'; // ValueBufferType is inherited + + /** + * Spherical linear unit quaternion interpolant. + */ + + class QuaternionLinearInterpolant extends Interpolant { + constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) { + super(parameterPositions, sampleValues, sampleSize, resultBuffer); + } + + interpolate_(i1, t0, t, t1) { + const result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + alpha = (t - t0) / (t1 - t0); + let offset = i1 * stride; + + for (let end = offset + stride; offset !== end; offset += 4) { + Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha); + } + + return result; + } + + } + + /** + * A Track of quaternion keyframe values. + */ + + class QuaternionKeyframeTrack extends KeyframeTrack { + InterpolantFactoryMethodLinear(result) { + return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result); + } + + } + + QuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion'; // ValueBufferType is inherited + + QuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear; + QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; + + /** + * A Track that interpolates Strings + */ + + class StringKeyframeTrack extends KeyframeTrack {} + + StringKeyframeTrack.prototype.ValueTypeName = 'string'; + StringKeyframeTrack.prototype.ValueBufferType = Array; + StringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete; + StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined; + StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined; + + /** + * A Track of vectored keyframe values. + */ + + class VectorKeyframeTrack extends KeyframeTrack {} + + VectorKeyframeTrack.prototype.ValueTypeName = 'vector'; // ValueBufferType is inherited + + class AnimationClip { + constructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) { + this.name = name; + this.tracks = tracks; + this.duration = duration; + this.blendMode = blendMode; + this.uuid = generateUUID(); // this means it should figure out its duration by scanning the tracks + + if (this.duration < 0) { + this.resetDuration(); + } + } + + static parse(json) { + const tracks = [], + jsonTracks = json.tracks, + frameTime = 1.0 / (json.fps || 1.0); + + for (let i = 0, n = jsonTracks.length; i !== n; ++i) { + tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime)); + } + + const clip = new this(json.name, json.duration, tracks, json.blendMode); + clip.uuid = json.uuid; + return clip; + } + + static toJSON(clip) { + const tracks = [], + clipTracks = clip.tracks; + const json = { + 'name': clip.name, + 'duration': clip.duration, + 'tracks': tracks, + 'uuid': clip.uuid, + 'blendMode': clip.blendMode + }; + + for (let i = 0, n = clipTracks.length; i !== n; ++i) { + tracks.push(KeyframeTrack.toJSON(clipTracks[i])); + } + + return json; + } + + static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) { + const numMorphTargets = morphTargetSequence.length; + const tracks = []; + + for (let i = 0; i < numMorphTargets; i++) { + let times = []; + let values = []; + times.push((i + numMorphTargets - 1) % numMorphTargets, i, (i + 1) % numMorphTargets); + values.push(0, 1, 0); + const order = AnimationUtils.getKeyframeOrder(times); + times = AnimationUtils.sortedArray(times, 1, order); + values = AnimationUtils.sortedArray(values, 1, order); // if there is a key at the first frame, duplicate it as the + // last frame as well for perfect loop. + + if (!noLoop && times[0] === 0) { + times.push(numMorphTargets); + values.push(values[0]); + } + + tracks.push(new NumberKeyframeTrack('.morphTargetInfluences[' + morphTargetSequence[i].name + ']', times, values).scale(1.0 / fps)); + } + + return new this(name, -1, tracks); + } + + static findByName(objectOrClipArray, name) { + let clipArray = objectOrClipArray; + + if (!Array.isArray(objectOrClipArray)) { + const o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + } + + for (let i = 0; i < clipArray.length; i++) { + if (clipArray[i].name === name) { + return clipArray[i]; + } + } + + return null; + } + + static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) { + const animationToMorphTargets = {}; // tested with https://regex101.com/ on trick sequences + // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 + + const pattern = /^([\w-]*?)([\d]+)$/; // sort morph target names into animation groups based + // patterns like Walk_001, Walk_002, Run_001, Run_002 + + for (let i = 0, il = morphTargets.length; i < il; i++) { + const morphTarget = morphTargets[i]; + const parts = morphTarget.name.match(pattern); + + if (parts && parts.length > 1) { + const name = parts[1]; + let animationMorphTargets = animationToMorphTargets[name]; + + if (!animationMorphTargets) { + animationToMorphTargets[name] = animationMorphTargets = []; + } + + animationMorphTargets.push(morphTarget); + } + } + + const clips = []; + + for (const name in animationToMorphTargets) { + clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop)); + } + + return clips; + } // parse the animation.hierarchy format + + + static parseAnimation(animation, bones) { + if (!animation) { + console.error('THREE.AnimationClip: No animation in JSONLoader data.'); + return null; + } + + const addNonemptyTrack = function (trackType, trackName, animationKeys, propertyName, destTracks) { + // only return track if there are actually keys. + if (animationKeys.length !== 0) { + const times = []; + const values = []; + AnimationUtils.flattenJSON(animationKeys, times, values, propertyName); // empty keys are filtered out, so check again + + if (times.length !== 0) { + destTracks.push(new trackType(trackName, times, values)); + } + } + }; + + const tracks = []; + const clipName = animation.name || 'default'; + const fps = animation.fps || 30; + const blendMode = animation.blendMode; // automatic length determination in AnimationClip. + + let duration = animation.length || -1; + const hierarchyTracks = animation.hierarchy || []; + + for (let h = 0; h < hierarchyTracks.length; h++) { + const animationKeys = hierarchyTracks[h].keys; // skip empty tracks + + if (!animationKeys || animationKeys.length === 0) continue; // process morph targets + + if (animationKeys[0].morphTargets) { + // figure out all morph targets used in this track + const morphTargetNames = {}; + let k; + + for (k = 0; k < animationKeys.length; k++) { + if (animationKeys[k].morphTargets) { + for (let m = 0; m < animationKeys[k].morphTargets.length; m++) { + morphTargetNames[animationKeys[k].morphTargets[m]] = -1; + } + } + } // create a track for each morph target with all zero + // morphTargetInfluences except for the keys in which + // the morphTarget is named. + + + for (const morphTargetName in morphTargetNames) { + const times = []; + const values = []; + + for (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) { + const animationKey = animationKeys[k]; + times.push(animationKey.time); + values.push(animationKey.morphTarget === morphTargetName ? 1 : 0); + } + + tracks.push(new NumberKeyframeTrack('.morphTargetInfluence[' + morphTargetName + ']', times, values)); + } + + duration = morphTargetNames.length * (fps || 1.0); + } else { + // ...assume skeletal animation + const boneName = '.bones[' + bones[h].name + ']'; + addNonemptyTrack(VectorKeyframeTrack, boneName + '.position', animationKeys, 'pos', tracks); + addNonemptyTrack(QuaternionKeyframeTrack, boneName + '.quaternion', animationKeys, 'rot', tracks); + addNonemptyTrack(VectorKeyframeTrack, boneName + '.scale', animationKeys, 'scl', tracks); + } + } + + if (tracks.length === 0) { + return null; + } + + const clip = new this(clipName, duration, tracks, blendMode); + return clip; + } + + resetDuration() { + const tracks = this.tracks; + let duration = 0; + + for (let i = 0, n = tracks.length; i !== n; ++i) { + const track = this.tracks[i]; + duration = Math.max(duration, track.times[track.times.length - 1]); + } + + this.duration = duration; + return this; + } + + trim() { + for (let i = 0; i < this.tracks.length; i++) { + this.tracks[i].trim(0, this.duration); + } + + return this; + } + + validate() { + let valid = true; + + for (let i = 0; i < this.tracks.length; i++) { + valid = valid && this.tracks[i].validate(); + } + + return valid; + } + + optimize() { + for (let i = 0; i < this.tracks.length; i++) { + this.tracks[i].optimize(); + } + + return this; + } + + clone() { + const tracks = []; + + for (let i = 0; i < this.tracks.length; i++) { + tracks.push(this.tracks[i].clone()); + } + + return new this.constructor(this.name, this.duration, tracks, this.blendMode); + } + + toJSON() { + return this.constructor.toJSON(this); + } + + } + + function getTrackTypeForValueTypeName(typeName) { + switch (typeName.toLowerCase()) { + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + return NumberKeyframeTrack; + + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + return VectorKeyframeTrack; + + case 'color': + return ColorKeyframeTrack; + + case 'quaternion': + return QuaternionKeyframeTrack; + + case 'bool': + case 'boolean': + return BooleanKeyframeTrack; + + case 'string': + return StringKeyframeTrack; + } + + throw new Error('THREE.KeyframeTrack: Unsupported typeName: ' + typeName); + } + + function parseKeyframeTrack(json) { + if (json.type === undefined) { + throw new Error('THREE.KeyframeTrack: track type undefined, can not parse'); + } + + const trackType = getTrackTypeForValueTypeName(json.type); + + if (json.times === undefined) { + const times = [], + values = []; + AnimationUtils.flattenJSON(json.keys, times, values, 'value'); + json.times = times; + json.values = values; + } // derived classes can define a static parse method + + + if (trackType.parse !== undefined) { + return trackType.parse(json); + } else { + // by default, we assume a constructor compatible with the base + return new trackType(json.name, json.times, json.values, json.interpolation); + } + } + + const Cache = { + enabled: false, + files: {}, + add: function (key, file) { + if (this.enabled === false) return; // console.log( 'THREE.Cache', 'Adding key:', key ); + + this.files[key] = file; + }, + get: function (key) { + if (this.enabled === false) return; // console.log( 'THREE.Cache', 'Checking key:', key ); + + return this.files[key]; + }, + remove: function (key) { + delete this.files[key]; + }, + clear: function () { + this.files = {}; + } + }; + + class LoadingManager { + constructor(onLoad, onProgress, onError) { + const scope = this; + let isLoading = false; + let itemsLoaded = 0; + let itemsTotal = 0; + let urlModifier = undefined; + const handlers = []; // Refer to #5689 for the reason why we don't set .onStart + // in the constructor + + this.onStart = undefined; + this.onLoad = onLoad; + this.onProgress = onProgress; + this.onError = onError; + + this.itemStart = function (url) { + itemsTotal++; + + if (isLoading === false) { + if (scope.onStart !== undefined) { + scope.onStart(url, itemsLoaded, itemsTotal); + } + } + + isLoading = true; + }; + + this.itemEnd = function (url) { + itemsLoaded++; + + if (scope.onProgress !== undefined) { + scope.onProgress(url, itemsLoaded, itemsTotal); + } + + if (itemsLoaded === itemsTotal) { + isLoading = false; + + if (scope.onLoad !== undefined) { + scope.onLoad(); + } + } + }; + + this.itemError = function (url) { + if (scope.onError !== undefined) { + scope.onError(url); + } + }; + + this.resolveURL = function (url) { + if (urlModifier) { + return urlModifier(url); + } + + return url; + }; + + this.setURLModifier = function (transform) { + urlModifier = transform; + return this; + }; + + this.addHandler = function (regex, loader) { + handlers.push(regex, loader); + return this; + }; + + this.removeHandler = function (regex) { + const index = handlers.indexOf(regex); + + if (index !== -1) { + handlers.splice(index, 2); + } + + return this; + }; + + this.getHandler = function (file) { + for (let i = 0, l = handlers.length; i < l; i += 2) { + const regex = handlers[i]; + const loader = handlers[i + 1]; + if (regex.global) regex.lastIndex = 0; // see #17920 + + if (regex.test(file)) { + return loader; + } + } + + return null; + }; + } + + } + + const DefaultLoadingManager = new LoadingManager(); + + class Loader { + constructor(manager) { + this.manager = manager !== undefined ? manager : DefaultLoadingManager; + this.crossOrigin = 'anonymous'; + this.withCredentials = false; + this.path = ''; + this.resourcePath = ''; + this.requestHeader = {}; + } + + load() {} + + loadAsync(url, onProgress) { + const scope = this; + return new Promise(function (resolve, reject) { + scope.load(url, resolve, onProgress, reject); + }); + } + + parse() {} + + setCrossOrigin(crossOrigin) { + this.crossOrigin = crossOrigin; + return this; + } + + setWithCredentials(value) { + this.withCredentials = value; + return this; + } + + setPath(path) { + this.path = path; + return this; + } + + setResourcePath(resourcePath) { + this.resourcePath = resourcePath; + return this; + } + + setRequestHeader(requestHeader) { + this.requestHeader = requestHeader; + return this; + } + + } + + const loading = {}; + + class FileLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + if (url === undefined) url = ''; + if (this.path !== undefined) url = this.path + url; + url = this.manager.resolveURL(url); + const scope = this; + const cached = Cache.get(url); + + if (cached !== undefined) { + scope.manager.itemStart(url); + setTimeout(function () { + if (onLoad) onLoad(cached); + scope.manager.itemEnd(url); + }, 0); + return cached; + } // Check if request is duplicate + + + if (loading[url] !== undefined) { + loading[url].push({ + onLoad: onLoad, + onProgress: onProgress, + onError: onError + }); + return; + } // Check for data: URI + + + const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; + const dataUriRegexResult = url.match(dataUriRegex); + let request; // Safari can not handle Data URIs through XMLHttpRequest so process manually + + if (dataUriRegexResult) { + const mimeType = dataUriRegexResult[1]; + const isBase64 = !!dataUriRegexResult[2]; + let data = dataUriRegexResult[3]; + data = decodeURIComponent(data); + if (isBase64) data = atob(data); + + try { + let response; + const responseType = (this.responseType || '').toLowerCase(); + + switch (responseType) { + case 'arraybuffer': + case 'blob': + const view = new Uint8Array(data.length); + + for (let i = 0; i < data.length; i++) { + view[i] = data.charCodeAt(i); + } + + if (responseType === 'blob') { + response = new Blob([view.buffer], { + type: mimeType + }); + } else { + response = view.buffer; + } + + break; + + case 'document': + const parser = new DOMParser(); + response = parser.parseFromString(data, mimeType); + break; + + case 'json': + response = JSON.parse(data); + break; + + default: + // 'text' or other + response = data; + break; + } // Wait for next browser tick like standard XMLHttpRequest event dispatching does + + + setTimeout(function () { + if (onLoad) onLoad(response); + scope.manager.itemEnd(url); + }, 0); + } catch (error) { + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout(function () { + if (onError) onError(error); + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }, 0); + } + } else { + // Initialise array for duplicate requests + loading[url] = []; + loading[url].push({ + onLoad: onLoad, + onProgress: onProgress, + onError: onError + }); + request = new XMLHttpRequest(); + request.open('GET', url, true); + request.addEventListener('load', function (event) { + const response = this.response; + const callbacks = loading[url]; + delete loading[url]; + + if (this.status === 200 || this.status === 0) { + // Some browsers return HTTP Status 0 when using non-http protocol + // e.g. 'file://' or 'data://'. Handle as success. + if (this.status === 0) console.warn('THREE.FileLoader: HTTP Status 0 received.'); // Add to cache only on HTTP success, so that we do not cache + // error response bodies as proper responses to requests. + + Cache.add(url, response); + + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onLoad) callback.onLoad(response); + } + + scope.manager.itemEnd(url); + } else { + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onError) callback.onError(event); + } + + scope.manager.itemError(url); + scope.manager.itemEnd(url); + } + }, false); + request.addEventListener('progress', function (event) { + const callbacks = loading[url]; + + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onProgress) callback.onProgress(event); + } + }, false); + request.addEventListener('error', function (event) { + const callbacks = loading[url]; + delete loading[url]; + + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onError) callback.onError(event); + } + + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }, false); + request.addEventListener('abort', function (event) { + const callbacks = loading[url]; + delete loading[url]; + + for (let i = 0, il = callbacks.length; i < il; i++) { + const callback = callbacks[i]; + if (callback.onError) callback.onError(event); + } + + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }, false); + if (this.responseType !== undefined) request.responseType = this.responseType; + if (this.withCredentials !== undefined) request.withCredentials = this.withCredentials; + if (request.overrideMimeType) request.overrideMimeType(this.mimeType !== undefined ? this.mimeType : 'text/plain'); + + for (const header in this.requestHeader) { + request.setRequestHeader(header, this.requestHeader[header]); + } + + request.send(null); + } + + scope.manager.itemStart(url); + return request; + } + + setResponseType(value) { + this.responseType = value; + return this; + } + + setMimeType(value) { + this.mimeType = value; + return this; + } + + } + + class AnimationLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (text) { + try { + onLoad(scope.parse(JSON.parse(text))); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + + scope.manager.itemError(url); + } + }, onProgress, onError); + } + + parse(json) { + const animations = []; + + for (let i = 0; i < json.length; i++) { + const clip = AnimationClip.parse(json[i]); + animations.push(clip); + } + + return animations; + } + + } + + /** + * Abstract Base class to block based textures loader (dds, pvr, ...) + * + * Sub classes have to implement the parse() method which will be used in load(). + */ + + class CompressedTextureLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const images = []; + const texture = new CompressedTexture(); + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setResponseType('arraybuffer'); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(scope.withCredentials); + let loaded = 0; + + function loadTexture(i) { + loader.load(url[i], function (buffer) { + const texDatas = scope.parse(buffer, true); + images[i] = { + width: texDatas.width, + height: texDatas.height, + format: texDatas.format, + mipmaps: texDatas.mipmaps + }; + loaded += 1; + + if (loaded === 6) { + if (texDatas.mipmapCount === 1) texture.minFilter = LinearFilter; + texture.image = images; + texture.format = texDatas.format; + texture.needsUpdate = true; + if (onLoad) onLoad(texture); + } + }, onProgress, onError); + } + + if (Array.isArray(url)) { + for (let i = 0, il = url.length; i < il; ++i) { + loadTexture(i); + } + } else { + // compressed cubemap texture stored in a single DDS file + loader.load(url, function (buffer) { + const texDatas = scope.parse(buffer, true); + + if (texDatas.isCubemap) { + const faces = texDatas.mipmaps.length / texDatas.mipmapCount; + + for (let f = 0; f < faces; f++) { + images[f] = { + mipmaps: [] + }; + + for (let i = 0; i < texDatas.mipmapCount; i++) { + images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]); + images[f].format = texDatas.format; + images[f].width = texDatas.width; + images[f].height = texDatas.height; + } + } + + texture.image = images; + } else { + texture.image.width = texDatas.width; + texture.image.height = texDatas.height; + texture.mipmaps = texDatas.mipmaps; + } + + if (texDatas.mipmapCount === 1) { + texture.minFilter = LinearFilter; + } + + texture.format = texDatas.format; + texture.needsUpdate = true; + if (onLoad) onLoad(texture); + }, onProgress, onError); + } + + return texture; + } + + } + + class ImageLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + if (this.path !== undefined) url = this.path + url; + url = this.manager.resolveURL(url); + const scope = this; + const cached = Cache.get(url); + + if (cached !== undefined) { + scope.manager.itemStart(url); + setTimeout(function () { + if (onLoad) onLoad(cached); + scope.manager.itemEnd(url); + }, 0); + return cached; + } + + const image = document.createElementNS('http://www.w3.org/1999/xhtml', 'img'); + + function onImageLoad() { + image.removeEventListener('load', onImageLoad, false); + image.removeEventListener('error', onImageError, false); + Cache.add(url, this); + if (onLoad) onLoad(this); + scope.manager.itemEnd(url); + } + + function onImageError(event) { + image.removeEventListener('load', onImageLoad, false); + image.removeEventListener('error', onImageError, false); + if (onError) onError(event); + scope.manager.itemError(url); + scope.manager.itemEnd(url); + } + + image.addEventListener('load', onImageLoad, false); + image.addEventListener('error', onImageError, false); + + if (url.substr(0, 5) !== 'data:') { + if (this.crossOrigin !== undefined) image.crossOrigin = this.crossOrigin; + } + + scope.manager.itemStart(url); + image.src = url; + return image; + } + + } + + class CubeTextureLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(urls, onLoad, onProgress, onError) { + const texture = new CubeTexture(); + const loader = new ImageLoader(this.manager); + loader.setCrossOrigin(this.crossOrigin); + loader.setPath(this.path); + let loaded = 0; + + function loadTexture(i) { + loader.load(urls[i], function (image) { + texture.images[i] = image; + loaded++; + + if (loaded === 6) { + texture.needsUpdate = true; + if (onLoad) onLoad(texture); + } + }, undefined, onError); + } + + for (let i = 0; i < urls.length; ++i) { + loadTexture(i); + } + + return texture; + } + + } + + /** + * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) + * + * Sub classes have to implement the parse() method which will be used in load(). + */ + + class DataTextureLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const texture = new DataTexture(); + const loader = new FileLoader(this.manager); + loader.setResponseType('arraybuffer'); + loader.setRequestHeader(this.requestHeader); + loader.setPath(this.path); + loader.setWithCredentials(scope.withCredentials); + loader.load(url, function (buffer) { + const texData = scope.parse(buffer); + if (!texData) return; + + if (texData.image !== undefined) { + texture.image = texData.image; + } else if (texData.data !== undefined) { + texture.image.width = texData.width; + texture.image.height = texData.height; + texture.image.data = texData.data; + } + + texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; + texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; + texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; + texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter; + texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; + + if (texData.encoding !== undefined) { + texture.encoding = texData.encoding; + } + + if (texData.flipY !== undefined) { + texture.flipY = texData.flipY; + } + + if (texData.format !== undefined) { + texture.format = texData.format; + } + + if (texData.type !== undefined) { + texture.type = texData.type; + } + + if (texData.mipmaps !== undefined) { + texture.mipmaps = texData.mipmaps; + texture.minFilter = LinearMipmapLinearFilter; // presumably... + } + + if (texData.mipmapCount === 1) { + texture.minFilter = LinearFilter; + } + + if (texData.generateMipmaps !== undefined) { + texture.generateMipmaps = texData.generateMipmaps; + } + + texture.needsUpdate = true; + if (onLoad) onLoad(texture, texData); + }, onProgress, onError); + return texture; + } + + } + + class TextureLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const texture = new Texture(); + const loader = new ImageLoader(this.manager); + loader.setCrossOrigin(this.crossOrigin); + loader.setPath(this.path); + loader.load(url, function (image) { + texture.image = image; // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. + + const isJPEG = url.search(/\.jpe?g($|\?)/i) > 0 || url.search(/^data\:image\/jpeg/) === 0; + texture.format = isJPEG ? RGBFormat : RGBAFormat; + texture.needsUpdate = true; + + if (onLoad !== undefined) { + onLoad(texture); + } + }, onProgress, onError); + return texture; + } + + } + + /************************************************************** + * Curved Path - a curve path is simply a array of connected + * curves, but retains the api of a curve + **************************************************************/ + + class CurvePath extends Curve { + constructor() { + super(); + this.type = 'CurvePath'; + this.curves = []; + this.autoClose = false; // Automatically closes the path + } + + add(curve) { + this.curves.push(curve); + } + + closePath() { + // Add a line curve if start and end of lines are not connected + const startPoint = this.curves[0].getPoint(0); + const endPoint = this.curves[this.curves.length - 1].getPoint(1); + + if (!startPoint.equals(endPoint)) { + this.curves.push(new LineCurve(endPoint, startPoint)); + } + } // To get accurate point with reference to + // entire path distance at time t, + // following has to be done: + // 1. Length of each sub path have to be known + // 2. Locate and identify type of curve + // 3. Get t for the curve + // 4. Return curve.getPointAt(t') + + + getPoint(t) { + const d = t * this.getLength(); + const curveLengths = this.getCurveLengths(); + let i = 0; // To think about boundaries points. + + while (i < curveLengths.length) { + if (curveLengths[i] >= d) { + const diff = curveLengths[i] - d; + const curve = this.curves[i]; + const segmentLength = curve.getLength(); + const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; + return curve.getPointAt(u); + } + + i++; + } + + return null; // loop where sum != 0, sum > d , sum+1 1 && !points[points.length - 1].equals(points[0])) { + points.push(points[0]); + } + + return points; + } + + copy(source) { + super.copy(source); + this.curves = []; + + for (let i = 0, l = source.curves.length; i < l; i++) { + const curve = source.curves[i]; + this.curves.push(curve.clone()); + } + + this.autoClose = source.autoClose; + return this; + } + + toJSON() { + const data = super.toJSON(); + data.autoClose = this.autoClose; + data.curves = []; + + for (let i = 0, l = this.curves.length; i < l; i++) { + const curve = this.curves[i]; + data.curves.push(curve.toJSON()); + } + + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.autoClose = json.autoClose; + this.curves = []; + + for (let i = 0, l = json.curves.length; i < l; i++) { + const curve = json.curves[i]; + this.curves.push(new Curves[curve.type]().fromJSON(curve)); + } + + return this; + } + + } + + class Path extends CurvePath { + constructor(points) { + super(); + this.type = 'Path'; + this.currentPoint = new Vector2(); + + if (points) { + this.setFromPoints(points); + } + } + + setFromPoints(points) { + this.moveTo(points[0].x, points[0].y); + + for (let i = 1, l = points.length; i < l; i++) { + this.lineTo(points[i].x, points[i].y); + } + + return this; + } + + moveTo(x, y) { + this.currentPoint.set(x, y); // TODO consider referencing vectors instead of copying? + + return this; + } + + lineTo(x, y) { + const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y)); + this.curves.push(curve); + this.currentPoint.set(x, y); + return this; + } + + quadraticCurveTo(aCPx, aCPy, aX, aY) { + const curve = new QuadraticBezierCurve(this.currentPoint.clone(), new Vector2(aCPx, aCPy), new Vector2(aX, aY)); + this.curves.push(curve); + this.currentPoint.set(aX, aY); + return this; + } + + bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) { + const curve = new CubicBezierCurve(this.currentPoint.clone(), new Vector2(aCP1x, aCP1y), new Vector2(aCP2x, aCP2y), new Vector2(aX, aY)); + this.curves.push(curve); + this.currentPoint.set(aX, aY); + return this; + } + + splineThru(pts + /*Array of Vector*/ + ) { + const npts = [this.currentPoint.clone()].concat(pts); + const curve = new SplineCurve(npts); + this.curves.push(curve); + this.currentPoint.copy(pts[pts.length - 1]); + return this; + } + + arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { + const x0 = this.currentPoint.x; + const y0 = this.currentPoint.y; + this.absarc(aX + x0, aY + y0, aRadius, aStartAngle, aEndAngle, aClockwise); + return this; + } + + absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { + this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise); + return this; + } + + ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) { + const x0 = this.currentPoint.x; + const y0 = this.currentPoint.y; + this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation); + return this; + } + + absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) { + const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation); + + if (this.curves.length > 0) { + // if a previous curve is present, attempt to join + const firstPoint = curve.getPoint(0); + + if (!firstPoint.equals(this.currentPoint)) { + this.lineTo(firstPoint.x, firstPoint.y); + } + } + + this.curves.push(curve); + const lastPoint = curve.getPoint(1); + this.currentPoint.copy(lastPoint); + return this; + } + + copy(source) { + super.copy(source); + this.currentPoint.copy(source.currentPoint); + return this; + } + + toJSON() { + const data = super.toJSON(); + data.currentPoint = this.currentPoint.toArray(); + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.currentPoint.fromArray(json.currentPoint); + return this; + } + + } + + class Shape extends Path { + constructor(points) { + super(points); + this.uuid = generateUUID(); + this.type = 'Shape'; + this.holes = []; + } + + getPointsHoles(divisions) { + const holesPts = []; + + for (let i = 0, l = this.holes.length; i < l; i++) { + holesPts[i] = this.holes[i].getPoints(divisions); + } + + return holesPts; + } // get points of shape and holes (keypoints based on segments parameter) + + + extractPoints(divisions) { + return { + shape: this.getPoints(divisions), + holes: this.getPointsHoles(divisions) + }; + } + + copy(source) { + super.copy(source); + this.holes = []; + + for (let i = 0, l = source.holes.length; i < l; i++) { + const hole = source.holes[i]; + this.holes.push(hole.clone()); + } + + return this; + } + + toJSON() { + const data = super.toJSON(); + data.uuid = this.uuid; + data.holes = []; + + for (let i = 0, l = this.holes.length; i < l; i++) { + const hole = this.holes[i]; + data.holes.push(hole.toJSON()); + } + + return data; + } + + fromJSON(json) { + super.fromJSON(json); + this.uuid = json.uuid; + this.holes = []; + + for (let i = 0, l = json.holes.length; i < l; i++) { + const hole = json.holes[i]; + this.holes.push(new Path().fromJSON(hole)); + } + + return this; + } + + } + + class Light extends Object3D { + constructor(color, intensity = 1) { + super(); + this.type = 'Light'; + this.color = new Color(color); + this.intensity = intensity; + } + + dispose() {// Empty here in base class; some subclasses override. + } + + copy(source) { + super.copy(source); + this.color.copy(source.color); + this.intensity = source.intensity; + return this; + } + + toJSON(meta) { + const data = super.toJSON(meta); + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + if (this.groundColor !== undefined) data.object.groundColor = this.groundColor.getHex(); + if (this.distance !== undefined) data.object.distance = this.distance; + if (this.angle !== undefined) data.object.angle = this.angle; + if (this.decay !== undefined) data.object.decay = this.decay; + if (this.penumbra !== undefined) data.object.penumbra = this.penumbra; + if (this.shadow !== undefined) data.object.shadow = this.shadow.toJSON(); + return data; + } + + } + + Light.prototype.isLight = true; + + class HemisphereLight extends Light { + constructor(skyColor, groundColor, intensity) { + super(skyColor, intensity); + this.type = 'HemisphereLight'; + this.position.copy(Object3D.DefaultUp); + this.updateMatrix(); + this.groundColor = new Color(groundColor); + } + + copy(source) { + Light.prototype.copy.call(this, source); + this.groundColor.copy(source.groundColor); + return this; + } + + } + + HemisphereLight.prototype.isHemisphereLight = true; + + const _projScreenMatrix$1 = /*@__PURE__*/new Matrix4(); + + const _lightPositionWorld$1 = /*@__PURE__*/new Vector3(); + + const _lookTarget$1 = /*@__PURE__*/new Vector3(); + + class LightShadow { + constructor(camera) { + this.camera = camera; + this.bias = 0; + this.normalBias = 0; + this.radius = 1; + this.blurSamples = 8; + this.mapSize = new Vector2(512, 512); + this.map = null; + this.mapPass = null; + this.matrix = new Matrix4(); + this.autoUpdate = true; + this.needsUpdate = false; + this._frustum = new Frustum(); + this._frameExtents = new Vector2(1, 1); + this._viewportCount = 1; + this._viewports = [new Vector4(0, 0, 1, 1)]; + } + + getViewportCount() { + return this._viewportCount; + } + + getFrustum() { + return this._frustum; + } + + updateMatrices(light) { + const shadowCamera = this.camera; + const shadowMatrix = this.matrix; + + _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld); + + shadowCamera.position.copy(_lightPositionWorld$1); + + _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld); + + shadowCamera.lookAt(_lookTarget$1); + shadowCamera.updateMatrixWorld(); + + _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse); + + this._frustum.setFromProjectionMatrix(_projScreenMatrix$1); + + shadowMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0); + shadowMatrix.multiply(shadowCamera.projectionMatrix); + shadowMatrix.multiply(shadowCamera.matrixWorldInverse); + } + + getViewport(viewportIndex) { + return this._viewports[viewportIndex]; + } + + getFrameExtents() { + return this._frameExtents; + } + + dispose() { + if (this.map) { + this.map.dispose(); + } + + if (this.mapPass) { + this.mapPass.dispose(); + } + } + + copy(source) { + this.camera = source.camera.clone(); + this.bias = source.bias; + this.radius = source.radius; + this.mapSize.copy(source.mapSize); + return this; + } + + clone() { + return new this.constructor().copy(this); + } + + toJSON() { + const object = {}; + if (this.bias !== 0) object.bias = this.bias; + if (this.normalBias !== 0) object.normalBias = this.normalBias; + if (this.radius !== 1) object.radius = this.radius; + if (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray(); + object.camera = this.camera.toJSON(false).object; + delete object.camera.matrix; + return object; + } + + } + + class SpotLightShadow extends LightShadow { + constructor() { + super(new PerspectiveCamera(50, 1, 0.5, 500)); + this.focus = 1; + } + + updateMatrices(light) { + const camera = this.camera; + const fov = RAD2DEG * 2 * light.angle * this.focus; + const aspect = this.mapSize.width / this.mapSize.height; + const far = light.distance || camera.far; + + if (fov !== camera.fov || aspect !== camera.aspect || far !== camera.far) { + camera.fov = fov; + camera.aspect = aspect; + camera.far = far; + camera.updateProjectionMatrix(); + } + + super.updateMatrices(light); + } + + copy(source) { + super.copy(source); + this.focus = source.focus; + return this; + } + + } + + SpotLightShadow.prototype.isSpotLightShadow = true; + + class SpotLight extends Light { + constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1) { + super(color, intensity); + this.type = 'SpotLight'; + this.position.copy(Object3D.DefaultUp); + this.updateMatrix(); + this.target = new Object3D(); + this.distance = distance; + this.angle = angle; + this.penumbra = penumbra; + this.decay = decay; // for physically correct lights, should be 2. + + this.shadow = new SpotLightShadow(); + } + + get power() { + // compute the light's luminous power (in lumens) from its intensity (in candela) + // by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd) + return this.intensity * Math.PI; + } + + set power(power) { + // set the light's intensity (in candela) from the desired luminous power (in lumens) + this.intensity = power / Math.PI; + } + + dispose() { + this.shadow.dispose(); + } + + copy(source) { + super.copy(source); + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + this.target = source.target.clone(); + this.shadow = source.shadow.clone(); + return this; + } + + } + + SpotLight.prototype.isSpotLight = true; + + const _projScreenMatrix = /*@__PURE__*/new Matrix4(); + + const _lightPositionWorld = /*@__PURE__*/new Vector3(); + + const _lookTarget = /*@__PURE__*/new Vector3(); + + class PointLightShadow extends LightShadow { + constructor() { + super(new PerspectiveCamera(90, 1, 0.5, 500)); + this._frameExtents = new Vector2(4, 2); + this._viewportCount = 6; + this._viewports = [// These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + // positive X + new Vector4(2, 1, 1, 1), // negative X + new Vector4(0, 1, 1, 1), // positive Z + new Vector4(3, 1, 1, 1), // negative Z + new Vector4(1, 1, 1, 1), // positive Y + new Vector4(3, 0, 1, 1), // negative Y + new Vector4(1, 0, 1, 1)]; + this._cubeDirections = [new Vector3(1, 0, 0), new Vector3(-1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1), new Vector3(0, 1, 0), new Vector3(0, -1, 0)]; + this._cubeUps = [new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1)]; + } + + updateMatrices(light, viewportIndex = 0) { + const camera = this.camera; + const shadowMatrix = this.matrix; + const far = light.distance || camera.far; + + if (far !== camera.far) { + camera.far = far; + camera.updateProjectionMatrix(); + } + + _lightPositionWorld.setFromMatrixPosition(light.matrixWorld); + + camera.position.copy(_lightPositionWorld); + + _lookTarget.copy(camera.position); + + _lookTarget.add(this._cubeDirections[viewportIndex]); + + camera.up.copy(this._cubeUps[viewportIndex]); + camera.lookAt(_lookTarget); + camera.updateMatrixWorld(); + shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z); + + _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + + this._frustum.setFromProjectionMatrix(_projScreenMatrix); + } + + } + + PointLightShadow.prototype.isPointLightShadow = true; + + class PointLight extends Light { + constructor(color, intensity, distance = 0, decay = 1) { + super(color, intensity); + this.type = 'PointLight'; + this.distance = distance; + this.decay = decay; // for physically correct lights, should be 2. + + this.shadow = new PointLightShadow(); + } + + get power() { + // compute the light's luminous power (in lumens) from its intensity (in candela) + // for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd) + return this.intensity * 4 * Math.PI; + } + + set power(power) { + // set the light's intensity (in candela) from the desired luminous power (in lumens) + this.intensity = power / (4 * Math.PI); + } + + dispose() { + this.shadow.dispose(); + } + + copy(source) { + super.copy(source); + this.distance = source.distance; + this.decay = source.decay; + this.shadow = source.shadow.clone(); + return this; + } + + } + + PointLight.prototype.isPointLight = true; + + class DirectionalLightShadow extends LightShadow { + constructor() { + super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500)); + } + + } + + DirectionalLightShadow.prototype.isDirectionalLightShadow = true; + + class DirectionalLight extends Light { + constructor(color, intensity) { + super(color, intensity); + this.type = 'DirectionalLight'; + this.position.copy(Object3D.DefaultUp); + this.updateMatrix(); + this.target = new Object3D(); + this.shadow = new DirectionalLightShadow(); + } + + dispose() { + this.shadow.dispose(); + } + + copy(source) { + super.copy(source); + this.target = source.target.clone(); + this.shadow = source.shadow.clone(); + return this; + } + + } + + DirectionalLight.prototype.isDirectionalLight = true; + + class AmbientLight extends Light { + constructor(color, intensity) { + super(color, intensity); + this.type = 'AmbientLight'; + } + + } + + AmbientLight.prototype.isAmbientLight = true; + + class RectAreaLight extends Light { + constructor(color, intensity, width = 10, height = 10) { + super(color, intensity); + this.type = 'RectAreaLight'; + this.width = width; + this.height = height; + } + + get power() { + // compute the light's luminous power (in lumens) from its intensity (in nits) + return this.intensity * this.width * this.height * Math.PI; + } + + set power(power) { + // set the light's intensity (in nits) from the desired luminous power (in lumens) + this.intensity = power / (this.width * this.height * Math.PI); + } + + copy(source) { + super.copy(source); + this.width = source.width; + this.height = source.height; + return this; + } + + toJSON(meta) { + const data = super.toJSON(meta); + data.object.width = this.width; + data.object.height = this.height; + return data; + } + + } + + RectAreaLight.prototype.isRectAreaLight = true; + + /** + * Primary reference: + * https://graphics.stanford.edu/papers/envmap/envmap.pdf + * + * Secondary reference: + * https://www.ppsloan.org/publications/StupidSH36.pdf + */ + // 3-band SH defined by 9 coefficients + + class SphericalHarmonics3 { + constructor() { + this.coefficients = []; + + for (let i = 0; i < 9; i++) { + this.coefficients.push(new Vector3()); + } + } + + set(coefficients) { + for (let i = 0; i < 9; i++) { + this.coefficients[i].copy(coefficients[i]); + } + + return this; + } + + zero() { + for (let i = 0; i < 9; i++) { + this.coefficients[i].set(0, 0, 0); + } + + return this; + } // get the radiance in the direction of the normal + // target is a Vector3 + + + getAt(normal, target) { + // normal is assumed to be unit length + const x = normal.x, + y = normal.y, + z = normal.z; + const coeff = this.coefficients; // band 0 + + target.copy(coeff[0]).multiplyScalar(0.282095); // band 1 + + target.addScaledVector(coeff[1], 0.488603 * y); + target.addScaledVector(coeff[2], 0.488603 * z); + target.addScaledVector(coeff[3], 0.488603 * x); // band 2 + + target.addScaledVector(coeff[4], 1.092548 * (x * y)); + target.addScaledVector(coeff[5], 1.092548 * (y * z)); + target.addScaledVector(coeff[6], 0.315392 * (3.0 * z * z - 1.0)); + target.addScaledVector(coeff[7], 1.092548 * (x * z)); + target.addScaledVector(coeff[8], 0.546274 * (x * x - y * y)); + return target; + } // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal + // target is a Vector3 + // https://graphics.stanford.edu/papers/envmap/envmap.pdf + + + getIrradianceAt(normal, target) { + // normal is assumed to be unit length + const x = normal.x, + y = normal.y, + z = normal.z; + const coeff = this.coefficients; // band 0 + + target.copy(coeff[0]).multiplyScalar(0.886227); // π * 0.282095 + // band 1 + + target.addScaledVector(coeff[1], 2.0 * 0.511664 * y); // ( 2 * π / 3 ) * 0.488603 + + target.addScaledVector(coeff[2], 2.0 * 0.511664 * z); + target.addScaledVector(coeff[3], 2.0 * 0.511664 * x); // band 2 + + target.addScaledVector(coeff[4], 2.0 * 0.429043 * x * y); // ( π / 4 ) * 1.092548 + + target.addScaledVector(coeff[5], 2.0 * 0.429043 * y * z); + target.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708); // ( π / 4 ) * 0.315392 * 3 + + target.addScaledVector(coeff[7], 2.0 * 0.429043 * x * z); + target.addScaledVector(coeff[8], 0.429043 * (x * x - y * y)); // ( π / 4 ) * 0.546274 + + return target; + } + + add(sh) { + for (let i = 0; i < 9; i++) { + this.coefficients[i].add(sh.coefficients[i]); + } + + return this; + } + + addScaledSH(sh, s) { + for (let i = 0; i < 9; i++) { + this.coefficients[i].addScaledVector(sh.coefficients[i], s); + } + + return this; + } + + scale(s) { + for (let i = 0; i < 9; i++) { + this.coefficients[i].multiplyScalar(s); + } + + return this; + } + + lerp(sh, alpha) { + for (let i = 0; i < 9; i++) { + this.coefficients[i].lerp(sh.coefficients[i], alpha); + } + + return this; + } + + equals(sh) { + for (let i = 0; i < 9; i++) { + if (!this.coefficients[i].equals(sh.coefficients[i])) { + return false; + } + } + + return true; + } + + copy(sh) { + return this.set(sh.coefficients); + } + + clone() { + return new this.constructor().copy(this); + } + + fromArray(array, offset = 0) { + const coefficients = this.coefficients; + + for (let i = 0; i < 9; i++) { + coefficients[i].fromArray(array, offset + i * 3); + } + + return this; + } + + toArray(array = [], offset = 0) { + const coefficients = this.coefficients; + + for (let i = 0; i < 9; i++) { + coefficients[i].toArray(array, offset + i * 3); + } + + return array; + } // evaluate the basis functions + // shBasis is an Array[ 9 ] + + + static getBasisAt(normal, shBasis) { + // normal is assumed to be unit length + const x = normal.x, + y = normal.y, + z = normal.z; // band 0 + + shBasis[0] = 0.282095; // band 1 + + shBasis[1] = 0.488603 * y; + shBasis[2] = 0.488603 * z; + shBasis[3] = 0.488603 * x; // band 2 + + shBasis[4] = 1.092548 * x * y; + shBasis[5] = 1.092548 * y * z; + shBasis[6] = 0.315392 * (3 * z * z - 1); + shBasis[7] = 1.092548 * x * z; + shBasis[8] = 0.546274 * (x * x - y * y); + } + + } + + SphericalHarmonics3.prototype.isSphericalHarmonics3 = true; + + class LightProbe extends Light { + constructor(sh = new SphericalHarmonics3(), intensity = 1) { + super(undefined, intensity); + this.sh = sh; + } + + copy(source) { + super.copy(source); + this.sh.copy(source.sh); + return this; + } + + fromJSON(json) { + this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON(); + + this.sh.fromArray(json.sh); + return this; + } + + toJSON(meta) { + const data = super.toJSON(meta); + data.object.sh = this.sh.toArray(); + return data; + } + + } + + LightProbe.prototype.isLightProbe = true; + + class MaterialLoader extends Loader { + constructor(manager) { + super(manager); + this.textures = {}; + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const loader = new FileLoader(scope.manager); + loader.setPath(scope.path); + loader.setRequestHeader(scope.requestHeader); + loader.setWithCredentials(scope.withCredentials); + loader.load(url, function (text) { + try { + onLoad(scope.parse(JSON.parse(text))); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + + scope.manager.itemError(url); + } + }, onProgress, onError); + } + + parse(json) { + const textures = this.textures; + + function getTexture(name) { + if (textures[name] === undefined) { + console.warn('THREE.MaterialLoader: Undefined texture', name); + } + + return textures[name]; + } + + const material = new Materials[json.type](); + if (json.uuid !== undefined) material.uuid = json.uuid; + if (json.name !== undefined) material.name = json.name; + if (json.color !== undefined && material.color !== undefined) material.color.setHex(json.color); + if (json.roughness !== undefined) material.roughness = json.roughness; + if (json.metalness !== undefined) material.metalness = json.metalness; + if (json.sheenTint !== undefined) material.sheenTint = new Color().setHex(json.sheenTint); + if (json.emissive !== undefined && material.emissive !== undefined) material.emissive.setHex(json.emissive); + if (json.specular !== undefined && material.specular !== undefined) material.specular.setHex(json.specular); + if (json.specularIntensity !== undefined) material.specularIntensity = json.specularIntensity; + if (json.specularTint !== undefined && material.specularTint !== undefined) material.specularTint.setHex(json.specularTint); + if (json.shininess !== undefined) material.shininess = json.shininess; + if (json.clearcoat !== undefined) material.clearcoat = json.clearcoat; + if (json.clearcoatRoughness !== undefined) material.clearcoatRoughness = json.clearcoatRoughness; + if (json.transmission !== undefined) material.transmission = json.transmission; + if (json.thickness !== undefined) material.thickness = json.thickness; + if (json.attenuationDistance !== undefined) material.attenuationDistance = json.attenuationDistance; + if (json.attenuationTint !== undefined && material.attenuationTint !== undefined) material.attenuationTint.setHex(json.attenuationTint); + if (json.fog !== undefined) material.fog = json.fog; + if (json.flatShading !== undefined) material.flatShading = json.flatShading; + if (json.blending !== undefined) material.blending = json.blending; + if (json.combine !== undefined) material.combine = json.combine; + if (json.side !== undefined) material.side = json.side; + if (json.shadowSide !== undefined) material.shadowSide = json.shadowSide; + if (json.opacity !== undefined) material.opacity = json.opacity; + if (json.format !== undefined) material.format = json.format; + if (json.transparent !== undefined) material.transparent = json.transparent; + if (json.alphaTest !== undefined) material.alphaTest = json.alphaTest; + if (json.depthTest !== undefined) material.depthTest = json.depthTest; + if (json.depthWrite !== undefined) material.depthWrite = json.depthWrite; + if (json.colorWrite !== undefined) material.colorWrite = json.colorWrite; + if (json.stencilWrite !== undefined) material.stencilWrite = json.stencilWrite; + if (json.stencilWriteMask !== undefined) material.stencilWriteMask = json.stencilWriteMask; + if (json.stencilFunc !== undefined) material.stencilFunc = json.stencilFunc; + if (json.stencilRef !== undefined) material.stencilRef = json.stencilRef; + if (json.stencilFuncMask !== undefined) material.stencilFuncMask = json.stencilFuncMask; + if (json.stencilFail !== undefined) material.stencilFail = json.stencilFail; + if (json.stencilZFail !== undefined) material.stencilZFail = json.stencilZFail; + if (json.stencilZPass !== undefined) material.stencilZPass = json.stencilZPass; + if (json.wireframe !== undefined) material.wireframe = json.wireframe; + if (json.wireframeLinewidth !== undefined) material.wireframeLinewidth = json.wireframeLinewidth; + if (json.wireframeLinecap !== undefined) material.wireframeLinecap = json.wireframeLinecap; + if (json.wireframeLinejoin !== undefined) material.wireframeLinejoin = json.wireframeLinejoin; + if (json.rotation !== undefined) material.rotation = json.rotation; + if (json.linewidth !== 1) material.linewidth = json.linewidth; + if (json.dashSize !== undefined) material.dashSize = json.dashSize; + if (json.gapSize !== undefined) material.gapSize = json.gapSize; + if (json.scale !== undefined) material.scale = json.scale; + if (json.polygonOffset !== undefined) material.polygonOffset = json.polygonOffset; + if (json.polygonOffsetFactor !== undefined) material.polygonOffsetFactor = json.polygonOffsetFactor; + if (json.polygonOffsetUnits !== undefined) material.polygonOffsetUnits = json.polygonOffsetUnits; + if (json.dithering !== undefined) material.dithering = json.dithering; + if (json.alphaToCoverage !== undefined) material.alphaToCoverage = json.alphaToCoverage; + if (json.premultipliedAlpha !== undefined) material.premultipliedAlpha = json.premultipliedAlpha; + if (json.visible !== undefined) material.visible = json.visible; + if (json.toneMapped !== undefined) material.toneMapped = json.toneMapped; + if (json.userData !== undefined) material.userData = json.userData; + + if (json.vertexColors !== undefined) { + if (typeof json.vertexColors === 'number') { + material.vertexColors = json.vertexColors > 0 ? true : false; + } else { + material.vertexColors = json.vertexColors; + } + } // Shader Material + + + if (json.uniforms !== undefined) { + for (const name in json.uniforms) { + const uniform = json.uniforms[name]; + material.uniforms[name] = {}; + + switch (uniform.type) { + case 't': + material.uniforms[name].value = getTexture(uniform.value); + break; + + case 'c': + material.uniforms[name].value = new Color().setHex(uniform.value); + break; + + case 'v2': + material.uniforms[name].value = new Vector2().fromArray(uniform.value); + break; + + case 'v3': + material.uniforms[name].value = new Vector3().fromArray(uniform.value); + break; + + case 'v4': + material.uniforms[name].value = new Vector4().fromArray(uniform.value); + break; + + case 'm3': + material.uniforms[name].value = new Matrix3().fromArray(uniform.value); + break; + + case 'm4': + material.uniforms[name].value = new Matrix4().fromArray(uniform.value); + break; + + default: + material.uniforms[name].value = uniform.value; + } + } + } + + if (json.defines !== undefined) material.defines = json.defines; + if (json.vertexShader !== undefined) material.vertexShader = json.vertexShader; + if (json.fragmentShader !== undefined) material.fragmentShader = json.fragmentShader; + + if (json.extensions !== undefined) { + for (const key in json.extensions) { + material.extensions[key] = json.extensions[key]; + } + } // Deprecated + + + if (json.shading !== undefined) material.flatShading = json.shading === 1; // THREE.FlatShading + // for PointsMaterial + + if (json.size !== undefined) material.size = json.size; + if (json.sizeAttenuation !== undefined) material.sizeAttenuation = json.sizeAttenuation; // maps + + if (json.map !== undefined) material.map = getTexture(json.map); + if (json.matcap !== undefined) material.matcap = getTexture(json.matcap); + if (json.alphaMap !== undefined) material.alphaMap = getTexture(json.alphaMap); + if (json.bumpMap !== undefined) material.bumpMap = getTexture(json.bumpMap); + if (json.bumpScale !== undefined) material.bumpScale = json.bumpScale; + if (json.normalMap !== undefined) material.normalMap = getTexture(json.normalMap); + if (json.normalMapType !== undefined) material.normalMapType = json.normalMapType; + + if (json.normalScale !== undefined) { + let normalScale = json.normalScale; + + if (Array.isArray(normalScale) === false) { + // Blender exporter used to export a scalar. See #7459 + normalScale = [normalScale, normalScale]; + } + + material.normalScale = new Vector2().fromArray(normalScale); + } + + if (json.displacementMap !== undefined) material.displacementMap = getTexture(json.displacementMap); + if (json.displacementScale !== undefined) material.displacementScale = json.displacementScale; + if (json.displacementBias !== undefined) material.displacementBias = json.displacementBias; + if (json.roughnessMap !== undefined) material.roughnessMap = getTexture(json.roughnessMap); + if (json.metalnessMap !== undefined) material.metalnessMap = getTexture(json.metalnessMap); + if (json.emissiveMap !== undefined) material.emissiveMap = getTexture(json.emissiveMap); + if (json.emissiveIntensity !== undefined) material.emissiveIntensity = json.emissiveIntensity; + if (json.specularMap !== undefined) material.specularMap = getTexture(json.specularMap); + if (json.specularIntensityMap !== undefined) material.specularIntensityMap = getTexture(json.specularIntensityMap); + if (json.specularTintMap !== undefined) material.specularTintMap = getTexture(json.specularTintMap); + if (json.envMap !== undefined) material.envMap = getTexture(json.envMap); + if (json.envMapIntensity !== undefined) material.envMapIntensity = json.envMapIntensity; + if (json.reflectivity !== undefined) material.reflectivity = json.reflectivity; + if (json.refractionRatio !== undefined) material.refractionRatio = json.refractionRatio; + if (json.lightMap !== undefined) material.lightMap = getTexture(json.lightMap); + if (json.lightMapIntensity !== undefined) material.lightMapIntensity = json.lightMapIntensity; + if (json.aoMap !== undefined) material.aoMap = getTexture(json.aoMap); + if (json.aoMapIntensity !== undefined) material.aoMapIntensity = json.aoMapIntensity; + if (json.gradientMap !== undefined) material.gradientMap = getTexture(json.gradientMap); + if (json.clearcoatMap !== undefined) material.clearcoatMap = getTexture(json.clearcoatMap); + if (json.clearcoatRoughnessMap !== undefined) material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap); + if (json.clearcoatNormalMap !== undefined) material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap); + if (json.clearcoatNormalScale !== undefined) material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale); + if (json.transmissionMap !== undefined) material.transmissionMap = getTexture(json.transmissionMap); + if (json.thicknessMap !== undefined) material.thicknessMap = getTexture(json.thicknessMap); + return material; + } + + setTextures(value) { + this.textures = value; + return this; + } + + } + + class LoaderUtils { + static decodeText(array) { + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder().decode(array); + } // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + + let s = ''; + + for (let i = 0, il = array.length; i < il; i++) { + // Implicitly assumes little-endian. + s += String.fromCharCode(array[i]); + } + + try { + // merges multi-byte utf-8 characters. + return decodeURIComponent(escape(s)); + } catch (e) { + // see #16358 + return s; + } + } + + static extractUrlBase(url) { + const index = url.lastIndexOf('/'); + if (index === -1) return './'; + return url.substr(0, index + 1); + } + + } + + class InstancedBufferGeometry extends BufferGeometry { + constructor() { + super(); + this.type = 'InstancedBufferGeometry'; + this.instanceCount = Infinity; + } + + copy(source) { + super.copy(source); + this.instanceCount = source.instanceCount; + return this; + } + + clone() { + return new this.constructor().copy(this); + } + + toJSON() { + const data = super.toJSON(this); + data.instanceCount = this.instanceCount; + data.isInstancedBufferGeometry = true; + return data; + } + + } + + InstancedBufferGeometry.prototype.isInstancedBufferGeometry = true; + + class BufferGeometryLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const loader = new FileLoader(scope.manager); + loader.setPath(scope.path); + loader.setRequestHeader(scope.requestHeader); + loader.setWithCredentials(scope.withCredentials); + loader.load(url, function (text) { + try { + onLoad(scope.parse(JSON.parse(text))); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + + scope.manager.itemError(url); + } + }, onProgress, onError); + } + + parse(json) { + const interleavedBufferMap = {}; + const arrayBufferMap = {}; + + function getInterleavedBuffer(json, uuid) { + if (interleavedBufferMap[uuid] !== undefined) return interleavedBufferMap[uuid]; + const interleavedBuffers = json.interleavedBuffers; + const interleavedBuffer = interleavedBuffers[uuid]; + const buffer = getArrayBuffer(json, interleavedBuffer.buffer); + const array = getTypedArray(interleavedBuffer.type, buffer); + const ib = new InterleavedBuffer(array, interleavedBuffer.stride); + ib.uuid = interleavedBuffer.uuid; + interleavedBufferMap[uuid] = ib; + return ib; + } + + function getArrayBuffer(json, uuid) { + if (arrayBufferMap[uuid] !== undefined) return arrayBufferMap[uuid]; + const arrayBuffers = json.arrayBuffers; + const arrayBuffer = arrayBuffers[uuid]; + const ab = new Uint32Array(arrayBuffer).buffer; + arrayBufferMap[uuid] = ab; + return ab; + } + + const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry(); + const index = json.data.index; + + if (index !== undefined) { + const typedArray = getTypedArray(index.type, index.array); + geometry.setIndex(new BufferAttribute(typedArray, 1)); + } + + const attributes = json.data.attributes; + + for (const key in attributes) { + const attribute = attributes[key]; + let bufferAttribute; + + if (attribute.isInterleavedBufferAttribute) { + const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data); + bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized); + } else { + const typedArray = getTypedArray(attribute.type, attribute.array); + const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute; + bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized); + } + + if (attribute.name !== undefined) bufferAttribute.name = attribute.name; + if (attribute.usage !== undefined) bufferAttribute.setUsage(attribute.usage); + + if (attribute.updateRange !== undefined) { + bufferAttribute.updateRange.offset = attribute.updateRange.offset; + bufferAttribute.updateRange.count = attribute.updateRange.count; + } + + geometry.setAttribute(key, bufferAttribute); + } + + const morphAttributes = json.data.morphAttributes; + + if (morphAttributes) { + for (const key in morphAttributes) { + const attributeArray = morphAttributes[key]; + const array = []; + + for (let i = 0, il = attributeArray.length; i < il; i++) { + const attribute = attributeArray[i]; + let bufferAttribute; + + if (attribute.isInterleavedBufferAttribute) { + const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data); + bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized); + } else { + const typedArray = getTypedArray(attribute.type, attribute.array); + bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized); + } + + if (attribute.name !== undefined) bufferAttribute.name = attribute.name; + array.push(bufferAttribute); + } + + geometry.morphAttributes[key] = array; + } + } + + const morphTargetsRelative = json.data.morphTargetsRelative; + + if (morphTargetsRelative) { + geometry.morphTargetsRelative = true; + } + + const groups = json.data.groups || json.data.drawcalls || json.data.offsets; + + if (groups !== undefined) { + for (let i = 0, n = groups.length; i !== n; ++i) { + const group = groups[i]; + geometry.addGroup(group.start, group.count, group.materialIndex); + } + } + + const boundingSphere = json.data.boundingSphere; + + if (boundingSphere !== undefined) { + const center = new Vector3(); + + if (boundingSphere.center !== undefined) { + center.fromArray(boundingSphere.center); + } + + geometry.boundingSphere = new Sphere(center, boundingSphere.radius); + } + + if (json.name) geometry.name = json.name; + if (json.userData) geometry.userData = json.userData; + return geometry; + } + + } + + class ObjectLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const path = this.path === '' ? LoaderUtils.extractUrlBase(url) : this.path; + this.resourcePath = this.resourcePath || path; + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (text) { + let json = null; + + try { + json = JSON.parse(text); + } catch (error) { + if (onError !== undefined) onError(error); + console.error('THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message); + return; + } + + const metadata = json.metadata; + + if (metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry') { + console.error('THREE.ObjectLoader: Can\'t load ' + url); + return; + } + + scope.parse(json, onLoad); + }, onProgress, onError); + } + + async loadAsync(url, onProgress) { + const scope = this; + const path = this.path === '' ? LoaderUtils.extractUrlBase(url) : this.path; + this.resourcePath = this.resourcePath || path; + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + const text = await loader.loadAsync(url, onProgress); + const json = JSON.parse(text); + const metadata = json.metadata; + + if (metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry') { + throw new Error('THREE.ObjectLoader: Can\'t load ' + url); + } + + return await scope.parseAsync(json); + } + + parse(json, onLoad) { + const animations = this.parseAnimations(json.animations); + const shapes = this.parseShapes(json.shapes); + const geometries = this.parseGeometries(json.geometries, shapes); + const images = this.parseImages(json.images, function () { + if (onLoad !== undefined) onLoad(object); + }); + const textures = this.parseTextures(json.textures, images); + const materials = this.parseMaterials(json.materials, textures); + const object = this.parseObject(json.object, geometries, materials, textures, animations); + const skeletons = this.parseSkeletons(json.skeletons, object); + this.bindSkeletons(object, skeletons); // + + if (onLoad !== undefined) { + let hasImages = false; + + for (const uuid in images) { + if (images[uuid] instanceof HTMLImageElement) { + hasImages = true; + break; + } + } + + if (hasImages === false) onLoad(object); + } + + return object; + } + + async parseAsync(json) { + const animations = this.parseAnimations(json.animations); + const shapes = this.parseShapes(json.shapes); + const geometries = this.parseGeometries(json.geometries, shapes); + const images = await this.parseImagesAsync(json.images); + const textures = this.parseTextures(json.textures, images); + const materials = this.parseMaterials(json.materials, textures); + const object = this.parseObject(json.object, geometries, materials, textures, animations); + const skeletons = this.parseSkeletons(json.skeletons, object); + this.bindSkeletons(object, skeletons); + return object; + } + + parseShapes(json) { + const shapes = {}; + + if (json !== undefined) { + for (let i = 0, l = json.length; i < l; i++) { + const shape = new Shape().fromJSON(json[i]); + shapes[shape.uuid] = shape; + } + } + + return shapes; + } + + parseSkeletons(json, object) { + const skeletons = {}; + const bones = {}; // generate bone lookup table + + object.traverse(function (child) { + if (child.isBone) bones[child.uuid] = child; + }); // create skeletons + + if (json !== undefined) { + for (let i = 0, l = json.length; i < l; i++) { + const skeleton = new Skeleton().fromJSON(json[i], bones); + skeletons[skeleton.uuid] = skeleton; + } + } + + return skeletons; + } + + parseGeometries(json, shapes) { + const geometries = {}; + + if (json !== undefined) { + const bufferGeometryLoader = new BufferGeometryLoader(); + + for (let i = 0, l = json.length; i < l; i++) { + let geometry; + const data = json[i]; + + switch (data.type) { + case 'BufferGeometry': + case 'InstancedBufferGeometry': + geometry = bufferGeometryLoader.parse(data); + break; + + case 'Geometry': + console.error('THREE.ObjectLoader: The legacy Geometry type is no longer supported.'); + break; + + default: + if (data.type in Geometries) { + geometry = Geometries[data.type].fromJSON(data, shapes); + } else { + console.warn(`THREE.ObjectLoader: Unsupported geometry type "${data.type}"`); + } + + } + + geometry.uuid = data.uuid; + if (data.name !== undefined) geometry.name = data.name; + if (geometry.isBufferGeometry === true && data.userData !== undefined) geometry.userData = data.userData; + geometries[data.uuid] = geometry; + } + } + + return geometries; + } + + parseMaterials(json, textures) { + const cache = {}; // MultiMaterial + + const materials = {}; + + if (json !== undefined) { + const loader = new MaterialLoader(); + loader.setTextures(textures); + + for (let i = 0, l = json.length; i < l; i++) { + const data = json[i]; + + if (data.type === 'MultiMaterial') { + // Deprecated + const array = []; + + for (let j = 0; j < data.materials.length; j++) { + const material = data.materials[j]; + + if (cache[material.uuid] === undefined) { + cache[material.uuid] = loader.parse(material); + } + + array.push(cache[material.uuid]); + } + + materials[data.uuid] = array; + } else { + if (cache[data.uuid] === undefined) { + cache[data.uuid] = loader.parse(data); + } + + materials[data.uuid] = cache[data.uuid]; + } + } + } + + return materials; + } + + parseAnimations(json) { + const animations = {}; + + if (json !== undefined) { + for (let i = 0; i < json.length; i++) { + const data = json[i]; + const clip = AnimationClip.parse(data); + animations[clip.uuid] = clip; + } + } + + return animations; + } + + parseImages(json, onLoad) { + const scope = this; + const images = {}; + let loader; + + function loadImage(url) { + scope.manager.itemStart(url); + return loader.load(url, function () { + scope.manager.itemEnd(url); + }, undefined, function () { + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }); + } + + function deserializeImage(image) { + if (typeof image === 'string') { + const url = image; + const path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(url) ? url : scope.resourcePath + url; + return loadImage(path); + } else { + if (image.data) { + return { + data: getTypedArray(image.type, image.data), + width: image.width, + height: image.height + }; + } else { + return null; + } + } + } + + if (json !== undefined && json.length > 0) { + const manager = new LoadingManager(onLoad); + loader = new ImageLoader(manager); + loader.setCrossOrigin(this.crossOrigin); + + for (let i = 0, il = json.length; i < il; i++) { + const image = json[i]; + const url = image.url; + + if (Array.isArray(url)) { + // load array of images e.g CubeTexture + images[image.uuid] = []; + + for (let j = 0, jl = url.length; j < jl; j++) { + const currentUrl = url[j]; + const deserializedImage = deserializeImage(currentUrl); + + if (deserializedImage !== null) { + if (deserializedImage instanceof HTMLImageElement) { + images[image.uuid].push(deserializedImage); + } else { + // special case: handle array of data textures for cube textures + images[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height)); + } + } + } + } else { + // load single image + const deserializedImage = deserializeImage(image.url); + + if (deserializedImage !== null) { + images[image.uuid] = deserializedImage; + } + } + } + } + + return images; + } + + async parseImagesAsync(json) { + const scope = this; + const images = {}; + let loader; + + async function deserializeImage(image) { + if (typeof image === 'string') { + const url = image; + const path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(url) ? url : scope.resourcePath + url; + return await loader.loadAsync(path); + } else { + if (image.data) { + return { + data: getTypedArray(image.type, image.data), + width: image.width, + height: image.height + }; + } else { + return null; + } + } + } + + if (json !== undefined && json.length > 0) { + loader = new ImageLoader(this.manager); + loader.setCrossOrigin(this.crossOrigin); + + for (let i = 0, il = json.length; i < il; i++) { + const image = json[i]; + const url = image.url; + + if (Array.isArray(url)) { + // load array of images e.g CubeTexture + images[image.uuid] = []; + + for (let j = 0, jl = url.length; j < jl; j++) { + const currentUrl = url[j]; + const deserializedImage = await deserializeImage(currentUrl); + + if (deserializedImage !== null) { + if (deserializedImage instanceof HTMLImageElement) { + images[image.uuid].push(deserializedImage); + } else { + // special case: handle array of data textures for cube textures + images[image.uuid].push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height)); + } + } + } + } else { + // load single image + const deserializedImage = await deserializeImage(image.url); + + if (deserializedImage !== null) { + images[image.uuid] = deserializedImage; + } + } + } + } + + return images; + } + + parseTextures(json, images) { + function parseConstant(value, type) { + if (typeof value === 'number') return value; + console.warn('THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value); + return type[value]; + } + + const textures = {}; + + if (json !== undefined) { + for (let i = 0, l = json.length; i < l; i++) { + const data = json[i]; + + if (data.image === undefined) { + console.warn('THREE.ObjectLoader: No "image" specified for', data.uuid); + } + + if (images[data.image] === undefined) { + console.warn('THREE.ObjectLoader: Undefined image', data.image); + } + + let texture; + const image = images[data.image]; + + if (Array.isArray(image)) { + texture = new CubeTexture(image); + if (image.length === 6) texture.needsUpdate = true; + } else { + if (image && image.data) { + texture = new DataTexture(image.data, image.width, image.height); + } else { + texture = new Texture(image); + } + + if (image) texture.needsUpdate = true; // textures can have undefined image data + } + + texture.uuid = data.uuid; + if (data.name !== undefined) texture.name = data.name; + if (data.mapping !== undefined) texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING); + if (data.offset !== undefined) texture.offset.fromArray(data.offset); + if (data.repeat !== undefined) texture.repeat.fromArray(data.repeat); + if (data.center !== undefined) texture.center.fromArray(data.center); + if (data.rotation !== undefined) texture.rotation = data.rotation; + + if (data.wrap !== undefined) { + texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING); + texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING); + } + + if (data.format !== undefined) texture.format = data.format; + if (data.type !== undefined) texture.type = data.type; + if (data.encoding !== undefined) texture.encoding = data.encoding; + if (data.minFilter !== undefined) texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER); + if (data.magFilter !== undefined) texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER); + if (data.anisotropy !== undefined) texture.anisotropy = data.anisotropy; + if (data.flipY !== undefined) texture.flipY = data.flipY; + if (data.premultiplyAlpha !== undefined) texture.premultiplyAlpha = data.premultiplyAlpha; + if (data.unpackAlignment !== undefined) texture.unpackAlignment = data.unpackAlignment; + textures[data.uuid] = texture; + } + } + + return textures; + } + + parseObject(data, geometries, materials, textures, animations) { + let object; + + function getGeometry(name) { + if (geometries[name] === undefined) { + console.warn('THREE.ObjectLoader: Undefined geometry', name); + } + + return geometries[name]; + } + + function getMaterial(name) { + if (name === undefined) return undefined; + + if (Array.isArray(name)) { + const array = []; + + for (let i = 0, l = name.length; i < l; i++) { + const uuid = name[i]; + + if (materials[uuid] === undefined) { + console.warn('THREE.ObjectLoader: Undefined material', uuid); + } + + array.push(materials[uuid]); + } + + return array; + } + + if (materials[name] === undefined) { + console.warn('THREE.ObjectLoader: Undefined material', name); + } + + return materials[name]; + } + + function getTexture(uuid) { + if (textures[uuid] === undefined) { + console.warn('THREE.ObjectLoader: Undefined texture', uuid); + } + + return textures[uuid]; + } + + let geometry, material; + + switch (data.type) { + case 'Scene': + object = new Scene(); + + if (data.background !== undefined) { + if (Number.isInteger(data.background)) { + object.background = new Color(data.background); + } else { + object.background = getTexture(data.background); + } + } + + if (data.environment !== undefined) { + object.environment = getTexture(data.environment); + } + + if (data.fog !== undefined) { + if (data.fog.type === 'Fog') { + object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far); + } else if (data.fog.type === 'FogExp2') { + object.fog = new FogExp2(data.fog.color, data.fog.density); + } + } + + break; + + case 'PerspectiveCamera': + object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far); + if (data.focus !== undefined) object.focus = data.focus; + if (data.zoom !== undefined) object.zoom = data.zoom; + if (data.filmGauge !== undefined) object.filmGauge = data.filmGauge; + if (data.filmOffset !== undefined) object.filmOffset = data.filmOffset; + if (data.view !== undefined) object.view = Object.assign({}, data.view); + break; + + case 'OrthographicCamera': + object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far); + if (data.zoom !== undefined) object.zoom = data.zoom; + if (data.view !== undefined) object.view = Object.assign({}, data.view); + break; + + case 'AmbientLight': + object = new AmbientLight(data.color, data.intensity); + break; + + case 'DirectionalLight': + object = new DirectionalLight(data.color, data.intensity); + break; + + case 'PointLight': + object = new PointLight(data.color, data.intensity, data.distance, data.decay); + break; + + case 'RectAreaLight': + object = new RectAreaLight(data.color, data.intensity, data.width, data.height); + break; + + case 'SpotLight': + object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay); + break; + + case 'HemisphereLight': + object = new HemisphereLight(data.color, data.groundColor, data.intensity); + break; + + case 'LightProbe': + object = new LightProbe().fromJSON(data); + break; + + case 'SkinnedMesh': + geometry = getGeometry(data.geometry); + material = getMaterial(data.material); + object = new SkinnedMesh(geometry, material); + if (data.bindMode !== undefined) object.bindMode = data.bindMode; + if (data.bindMatrix !== undefined) object.bindMatrix.fromArray(data.bindMatrix); + if (data.skeleton !== undefined) object.skeleton = data.skeleton; + break; + + case 'Mesh': + geometry = getGeometry(data.geometry); + material = getMaterial(data.material); + object = new Mesh(geometry, material); + break; + + case 'InstancedMesh': + geometry = getGeometry(data.geometry); + material = getMaterial(data.material); + const count = data.count; + const instanceMatrix = data.instanceMatrix; + const instanceColor = data.instanceColor; + object = new InstancedMesh(geometry, material, count); + object.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16); + if (instanceColor !== undefined) object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize); + break; + + case 'LOD': + object = new LOD(); + break; + + case 'Line': + object = new Line(getGeometry(data.geometry), getMaterial(data.material)); + break; + + case 'LineLoop': + object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material)); + break; + + case 'LineSegments': + object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material)); + break; + + case 'PointCloud': + case 'Points': + object = new Points(getGeometry(data.geometry), getMaterial(data.material)); + break; + + case 'Sprite': + object = new Sprite(getMaterial(data.material)); + break; + + case 'Group': + object = new Group(); + break; + + case 'Bone': + object = new Bone(); + break; + + default: + object = new Object3D(); + } + + object.uuid = data.uuid; + if (data.name !== undefined) object.name = data.name; + + if (data.matrix !== undefined) { + object.matrix.fromArray(data.matrix); + if (data.matrixAutoUpdate !== undefined) object.matrixAutoUpdate = data.matrixAutoUpdate; + if (object.matrixAutoUpdate) object.matrix.decompose(object.position, object.quaternion, object.scale); + } else { + if (data.position !== undefined) object.position.fromArray(data.position); + if (data.rotation !== undefined) object.rotation.fromArray(data.rotation); + if (data.quaternion !== undefined) object.quaternion.fromArray(data.quaternion); + if (data.scale !== undefined) object.scale.fromArray(data.scale); + } + + if (data.castShadow !== undefined) object.castShadow = data.castShadow; + if (data.receiveShadow !== undefined) object.receiveShadow = data.receiveShadow; + + if (data.shadow) { + if (data.shadow.bias !== undefined) object.shadow.bias = data.shadow.bias; + if (data.shadow.normalBias !== undefined) object.shadow.normalBias = data.shadow.normalBias; + if (data.shadow.radius !== undefined) object.shadow.radius = data.shadow.radius; + if (data.shadow.mapSize !== undefined) object.shadow.mapSize.fromArray(data.shadow.mapSize); + if (data.shadow.camera !== undefined) object.shadow.camera = this.parseObject(data.shadow.camera); + } + + if (data.visible !== undefined) object.visible = data.visible; + if (data.frustumCulled !== undefined) object.frustumCulled = data.frustumCulled; + if (data.renderOrder !== undefined) object.renderOrder = data.renderOrder; + if (data.userData !== undefined) object.userData = data.userData; + if (data.layers !== undefined) object.layers.mask = data.layers; + + if (data.children !== undefined) { + const children = data.children; + + for (let i = 0; i < children.length; i++) { + object.add(this.parseObject(children[i], geometries, materials, textures, animations)); + } + } + + if (data.animations !== undefined) { + const objectAnimations = data.animations; + + for (let i = 0; i < objectAnimations.length; i++) { + const uuid = objectAnimations[i]; + object.animations.push(animations[uuid]); + } + } + + if (data.type === 'LOD') { + if (data.autoUpdate !== undefined) object.autoUpdate = data.autoUpdate; + const levels = data.levels; + + for (let l = 0; l < levels.length; l++) { + const level = levels[l]; + const child = object.getObjectByProperty('uuid', level.object); + + if (child !== undefined) { + object.addLevel(child, level.distance); + } + } + } + + return object; + } + + bindSkeletons(object, skeletons) { + if (Object.keys(skeletons).length === 0) return; + object.traverse(function (child) { + if (child.isSkinnedMesh === true && child.skeleton !== undefined) { + const skeleton = skeletons[child.skeleton]; + + if (skeleton === undefined) { + console.warn('THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton); + } else { + child.bind(skeleton, child.bindMatrix); + } + } + }); + } + /* DEPRECATED */ + + + setTexturePath(value) { + console.warn('THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().'); + return this.setResourcePath(value); + } + + } + + const TEXTURE_MAPPING = { + UVMapping: UVMapping, + CubeReflectionMapping: CubeReflectionMapping, + CubeRefractionMapping: CubeRefractionMapping, + EquirectangularReflectionMapping: EquirectangularReflectionMapping, + EquirectangularRefractionMapping: EquirectangularRefractionMapping, + CubeUVReflectionMapping: CubeUVReflectionMapping, + CubeUVRefractionMapping: CubeUVRefractionMapping + }; + const TEXTURE_WRAPPING = { + RepeatWrapping: RepeatWrapping, + ClampToEdgeWrapping: ClampToEdgeWrapping, + MirroredRepeatWrapping: MirroredRepeatWrapping + }; + const TEXTURE_FILTER = { + NearestFilter: NearestFilter, + NearestMipmapNearestFilter: NearestMipmapNearestFilter, + NearestMipmapLinearFilter: NearestMipmapLinearFilter, + LinearFilter: LinearFilter, + LinearMipmapNearestFilter: LinearMipmapNearestFilter, + LinearMipmapLinearFilter: LinearMipmapLinearFilter + }; + + class ImageBitmapLoader extends Loader { + constructor(manager) { + super(manager); + + if (typeof createImageBitmap === 'undefined') { + console.warn('THREE.ImageBitmapLoader: createImageBitmap() not supported.'); + } + + if (typeof fetch === 'undefined') { + console.warn('THREE.ImageBitmapLoader: fetch() not supported.'); + } + + this.options = { + premultiplyAlpha: 'none' + }; + } + + setOptions(options) { + this.options = options; + return this; + } + + load(url, onLoad, onProgress, onError) { + if (url === undefined) url = ''; + if (this.path !== undefined) url = this.path + url; + url = this.manager.resolveURL(url); + const scope = this; + const cached = Cache.get(url); + + if (cached !== undefined) { + scope.manager.itemStart(url); + setTimeout(function () { + if (onLoad) onLoad(cached); + scope.manager.itemEnd(url); + }, 0); + return cached; + } + + const fetchOptions = {}; + fetchOptions.credentials = this.crossOrigin === 'anonymous' ? 'same-origin' : 'include'; + fetchOptions.headers = this.requestHeader; + fetch(url, fetchOptions).then(function (res) { + return res.blob(); + }).then(function (blob) { + return createImageBitmap(blob, Object.assign(scope.options, { + colorSpaceConversion: 'none' + })); + }).then(function (imageBitmap) { + Cache.add(url, imageBitmap); + if (onLoad) onLoad(imageBitmap); + scope.manager.itemEnd(url); + }).catch(function (e) { + if (onError) onError(e); + scope.manager.itemError(url); + scope.manager.itemEnd(url); + }); + scope.manager.itemStart(url); + } + + } + + ImageBitmapLoader.prototype.isImageBitmapLoader = true; + + class ShapePath { + constructor() { + this.type = 'ShapePath'; + this.color = new Color(); + this.subPaths = []; + this.currentPath = null; + } + + moveTo(x, y) { + this.currentPath = new Path(); + this.subPaths.push(this.currentPath); + this.currentPath.moveTo(x, y); + return this; + } + + lineTo(x, y) { + this.currentPath.lineTo(x, y); + return this; + } + + quadraticCurveTo(aCPx, aCPy, aX, aY) { + this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY); + return this; + } + + bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) { + this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY); + return this; + } + + splineThru(pts) { + this.currentPath.splineThru(pts); + return this; + } + + toShapes(isCCW, noHoles) { + function toShapesNoHoles(inSubpaths) { + const shapes = []; + + for (let i = 0, l = inSubpaths.length; i < l; i++) { + const tmpPath = inSubpaths[i]; + const tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push(tmpShape); + } + + return shapes; + } + + function isPointInsidePolygon(inPt, inPolygon) { + const polyLen = inPolygon.length; // inPt on polygon contour => immediate success or + // toggling of inside/outside at every single! intersection point of an edge + // with the horizontal line through inPt, left of inPt + // not counting lowerY endpoints of edges and whole edges on that line + + let inside = false; + + for (let p = polyLen - 1, q = 0; q < polyLen; p = q++) { + let edgeLowPt = inPolygon[p]; + let edgeHighPt = inPolygon[q]; + let edgeDx = edgeHighPt.x - edgeLowPt.x; + let edgeDy = edgeHighPt.y - edgeLowPt.y; + + if (Math.abs(edgeDy) > Number.EPSILON) { + // not parallel + if (edgeDy < 0) { + edgeLowPt = inPolygon[q]; + edgeDx = -edgeDx; + edgeHighPt = inPolygon[p]; + edgeDy = -edgeDy; + } + + if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y) continue; + + if (inPt.y === edgeLowPt.y) { + if (inPt.x === edgeLowPt.x) return true; // inPt is on contour ? + // continue; // no intersection or edgeLowPt => doesn't count !!! + } else { + const perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y); + if (perpEdge === 0) return true; // inPt is on contour ? + + if (perpEdge < 0) continue; + inside = !inside; // true intersection left of inPt + } + } else { + // parallel or collinear + if (inPt.y !== edgeLowPt.y) continue; // parallel + // edge lies on the same horizontal line as inPt + + if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x) return true; // inPt: Point on contour ! + // continue; + } + } + + return inside; + } + + const isClockWise = ShapeUtils.isClockWise; + const subPaths = this.subPaths; + if (subPaths.length === 0) return []; + if (noHoles === true) return toShapesNoHoles(subPaths); + let solid, tmpPath, tmpShape; + const shapes = []; + + if (subPaths.length === 1) { + tmpPath = subPaths[0]; + tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push(tmpShape); + return shapes; + } + + let holesFirst = !isClockWise(subPaths[0].getPoints()); + holesFirst = isCCW ? !holesFirst : holesFirst; // console.log("Holes first", holesFirst); + + const betterShapeHoles = []; + const newShapes = []; + let newShapeHoles = []; + let mainIdx = 0; + let tmpPoints; + newShapes[mainIdx] = undefined; + newShapeHoles[mainIdx] = []; + + for (let i = 0, l = subPaths.length; i < l; i++) { + tmpPath = subPaths[i]; + tmpPoints = tmpPath.getPoints(); + solid = isClockWise(tmpPoints); + solid = isCCW ? !solid : solid; + + if (solid) { + if (!holesFirst && newShapes[mainIdx]) mainIdx++; + newShapes[mainIdx] = { + s: new Shape(), + p: tmpPoints + }; + newShapes[mainIdx].s.curves = tmpPath.curves; + if (holesFirst) mainIdx++; + newShapeHoles[mainIdx] = []; //console.log('cw', i); + } else { + newShapeHoles[mainIdx].push({ + h: tmpPath, + p: tmpPoints[0] + }); //console.log('ccw', i); + } + } // only Holes? -> probably all Shapes with wrong orientation + + + if (!newShapes[0]) return toShapesNoHoles(subPaths); + + if (newShapes.length > 1) { + let ambiguous = false; + const toChange = []; + + for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) { + betterShapeHoles[sIdx] = []; + } + + for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) { + const sho = newShapeHoles[sIdx]; + + for (let hIdx = 0; hIdx < sho.length; hIdx++) { + const ho = sho[hIdx]; + let hole_unassigned = true; + + for (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) { + if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) { + if (sIdx !== s2Idx) toChange.push({ + froms: sIdx, + tos: s2Idx, + hole: hIdx + }); + + if (hole_unassigned) { + hole_unassigned = false; + betterShapeHoles[s2Idx].push(ho); + } else { + ambiguous = true; + } + } + } + + if (hole_unassigned) { + betterShapeHoles[sIdx].push(ho); + } + } + } // console.log("ambiguous: ", ambiguous); + + + if (toChange.length > 0) { + // console.log("to change: ", toChange); + if (!ambiguous) newShapeHoles = betterShapeHoles; + } + } + + let tmpHoles; + + for (let i = 0, il = newShapes.length; i < il; i++) { + tmpShape = newShapes[i].s; + shapes.push(tmpShape); + tmpHoles = newShapeHoles[i]; + + for (let j = 0, jl = tmpHoles.length; j < jl; j++) { + tmpShape.holes.push(tmpHoles[j].h); + } + } //console.log("shape", shapes); + + + return shapes; + } + + } + + class Font { + constructor(data) { + this.type = 'Font'; + this.data = data; + } + + generateShapes(text, size = 100) { + const shapes = []; + const paths = createPaths(text, size, this.data); + + for (let p = 0, pl = paths.length; p < pl; p++) { + Array.prototype.push.apply(shapes, paths[p].toShapes()); + } + + return shapes; + } + + } + + function createPaths(text, size, data) { + const chars = Array.from(text); + const scale = size / data.resolution; + const line_height = (data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness) * scale; + const paths = []; + let offsetX = 0, + offsetY = 0; + + for (let i = 0; i < chars.length; i++) { + const char = chars[i]; + + if (char === '\n') { + offsetX = 0; + offsetY -= line_height; + } else { + const ret = createPath(char, scale, offsetX, offsetY, data); + offsetX += ret.offsetX; + paths.push(ret.path); + } + } + + return paths; + } + + function createPath(char, scale, offsetX, offsetY, data) { + const glyph = data.glyphs[char] || data.glyphs['?']; + + if (!glyph) { + console.error('THREE.Font: character "' + char + '" does not exists in font family ' + data.familyName + '.'); + return; + } + + const path = new ShapePath(); + let x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; + + if (glyph.o) { + const outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(' ')); + + for (let i = 0, l = outline.length; i < l;) { + const action = outline[i++]; + + switch (action) { + case 'm': + // moveTo + x = outline[i++] * scale + offsetX; + y = outline[i++] * scale + offsetY; + path.moveTo(x, y); + break; + + case 'l': + // lineTo + x = outline[i++] * scale + offsetX; + y = outline[i++] * scale + offsetY; + path.lineTo(x, y); + break; + + case 'q': + // quadraticCurveTo + cpx = outline[i++] * scale + offsetX; + cpy = outline[i++] * scale + offsetY; + cpx1 = outline[i++] * scale + offsetX; + cpy1 = outline[i++] * scale + offsetY; + path.quadraticCurveTo(cpx1, cpy1, cpx, cpy); + break; + + case 'b': + // bezierCurveTo + cpx = outline[i++] * scale + offsetX; + cpy = outline[i++] * scale + offsetY; + cpx1 = outline[i++] * scale + offsetX; + cpy1 = outline[i++] * scale + offsetY; + cpx2 = outline[i++] * scale + offsetX; + cpy2 = outline[i++] * scale + offsetY; + path.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, cpx, cpy); + break; + } + } + } + + return { + offsetX: glyph.ha * scale, + path: path + }; + } + + Font.prototype.isFont = true; + + class FontLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const loader = new FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(scope.withCredentials); + loader.load(url, function (text) { + let json; + + try { + json = JSON.parse(text); + } catch (e) { + console.warn('THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.'); + json = JSON.parse(text.substring(65, text.length - 2)); + } + + const font = scope.parse(json); + if (onLoad) onLoad(font); + }, onProgress, onError); + } + + parse(json) { + return new Font(json); + } + + } + + let _context; + + const AudioContext = { + getContext: function () { + if (_context === undefined) { + _context = new (window.AudioContext || window.webkitAudioContext)(); + } + + return _context; + }, + setContext: function (value) { + _context = value; + } + }; + + class AudioLoader extends Loader { + constructor(manager) { + super(manager); + } + + load(url, onLoad, onProgress, onError) { + const scope = this; + const loader = new FileLoader(this.manager); + loader.setResponseType('arraybuffer'); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (buffer) { + try { + // Create a copy of the buffer. The `decodeAudioData` method + // detaches the buffer when complete, preventing reuse. + const bufferCopy = buffer.slice(0); + const context = AudioContext.getContext(); + context.decodeAudioData(bufferCopy, function (audioBuffer) { + onLoad(audioBuffer); + }); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + + scope.manager.itemError(url); + } + }, onProgress, onError); + } + + } + + class HemisphereLightProbe extends LightProbe { + constructor(skyColor, groundColor, intensity = 1) { + super(undefined, intensity); + const color1 = new Color().set(skyColor); + const color2 = new Color().set(groundColor); + const sky = new Vector3(color1.r, color1.g, color1.b); + const ground = new Vector3(color2.r, color2.g, color2.b); // without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI ); + + const c0 = Math.sqrt(Math.PI); + const c1 = c0 * Math.sqrt(0.75); + this.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0); + this.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1); + } + + } + + HemisphereLightProbe.prototype.isHemisphereLightProbe = true; + + class AmbientLightProbe extends LightProbe { + constructor(color, intensity = 1) { + super(undefined, intensity); + const color1 = new Color().set(color); // without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI ); + + this.sh.coefficients[0].set(color1.r, color1.g, color1.b).multiplyScalar(2 * Math.sqrt(Math.PI)); + } + + } + + AmbientLightProbe.prototype.isAmbientLightProbe = true; + + const _eyeRight = /*@__PURE__*/new Matrix4(); + + const _eyeLeft = /*@__PURE__*/new Matrix4(); + + class StereoCamera { + constructor() { + this.type = 'StereoCamera'; + this.aspect = 1; + this.eyeSep = 0.064; + this.cameraL = new PerspectiveCamera(); + this.cameraL.layers.enable(1); + this.cameraL.matrixAutoUpdate = false; + this.cameraR = new PerspectiveCamera(); + this.cameraR.layers.enable(2); + this.cameraR.matrixAutoUpdate = false; + this._cache = { + focus: null, + fov: null, + aspect: null, + near: null, + far: null, + zoom: null, + eyeSep: null + }; + } + + update(camera) { + const cache = this._cache; + const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep; + + if (needsUpdate) { + cache.focus = camera.focus; + cache.fov = camera.fov; + cache.aspect = camera.aspect * this.aspect; + cache.near = camera.near; + cache.far = camera.far; + cache.zoom = camera.zoom; + cache.eyeSep = this.eyeSep; // Off-axis stereoscopic effect based on + // http://paulbourke.net/stereographics/stereorender/ + + const projectionMatrix = camera.projectionMatrix.clone(); + const eyeSepHalf = cache.eyeSep / 2; + const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus; + const ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom; + let xmin, xmax; // translate xOffset + + _eyeLeft.elements[12] = -eyeSepHalf; + _eyeRight.elements[12] = eyeSepHalf; // for left eye + + xmin = -ymax * cache.aspect + eyeSepOnProjection; + xmax = ymax * cache.aspect + eyeSepOnProjection; + projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin); + projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin); + this.cameraL.projectionMatrix.copy(projectionMatrix); // for right eye + + xmin = -ymax * cache.aspect - eyeSepOnProjection; + xmax = ymax * cache.aspect - eyeSepOnProjection; + projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin); + projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin); + this.cameraR.projectionMatrix.copy(projectionMatrix); + } + + this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft); + this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight); + } + + } + + class Clock { + constructor(autoStart = true) { + this.autoStart = autoStart; + this.startTime = 0; + this.oldTime = 0; + this.elapsedTime = 0; + this.running = false; + } + + start() { + this.startTime = now(); + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + } + + stop() { + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + } + + getElapsedTime() { + this.getDelta(); + return this.elapsedTime; + } + + getDelta() { + let diff = 0; + + if (this.autoStart && !this.running) { + this.start(); + return 0; + } + + if (this.running) { + const newTime = now(); + diff = (newTime - this.oldTime) / 1000; + this.oldTime = newTime; + this.elapsedTime += diff; + } + + return diff; + } + + } + + function now() { + return (typeof performance === 'undefined' ? Date : performance).now(); // see #10732 + } + + const _position$1 = /*@__PURE__*/new Vector3(); + + const _quaternion$1 = /*@__PURE__*/new Quaternion(); + + const _scale$1 = /*@__PURE__*/new Vector3(); + + const _orientation$1 = /*@__PURE__*/new Vector3(); + + class AudioListener extends Object3D { + constructor() { + super(); + this.type = 'AudioListener'; + this.context = AudioContext.getContext(); + this.gain = this.context.createGain(); + this.gain.connect(this.context.destination); + this.filter = null; + this.timeDelta = 0; // private + + this._clock = new Clock(); + } + + getInput() { + return this.gain; + } + + removeFilter() { + if (this.filter !== null) { + this.gain.disconnect(this.filter); + this.filter.disconnect(this.context.destination); + this.gain.connect(this.context.destination); + this.filter = null; + } + + return this; + } + + getFilter() { + return this.filter; + } + + setFilter(value) { + if (this.filter !== null) { + this.gain.disconnect(this.filter); + this.filter.disconnect(this.context.destination); + } else { + this.gain.disconnect(this.context.destination); + } + + this.filter = value; + this.gain.connect(this.filter); + this.filter.connect(this.context.destination); + return this; + } + + getMasterVolume() { + return this.gain.gain.value; + } + + setMasterVolume(value) { + this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01); + return this; + } + + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + const listener = this.context.listener; + const up = this.up; + this.timeDelta = this._clock.getDelta(); + this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1); + + _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1); + + if (listener.positionX) { + // code path for Chrome (see #14393) + const endTime = this.context.currentTime + this.timeDelta; + listener.positionX.linearRampToValueAtTime(_position$1.x, endTime); + listener.positionY.linearRampToValueAtTime(_position$1.y, endTime); + listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime); + listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime); + listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime); + listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime); + listener.upX.linearRampToValueAtTime(up.x, endTime); + listener.upY.linearRampToValueAtTime(up.y, endTime); + listener.upZ.linearRampToValueAtTime(up.z, endTime); + } else { + listener.setPosition(_position$1.x, _position$1.y, _position$1.z); + listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z); + } + } + + } + + class Audio extends Object3D { + constructor(listener) { + super(); + this.type = 'Audio'; + this.listener = listener; + this.context = listener.context; + this.gain = this.context.createGain(); + this.gain.connect(listener.getInput()); + this.autoplay = false; + this.buffer = null; + this.detune = 0; + this.loop = false; + this.loopStart = 0; + this.loopEnd = 0; + this.offset = 0; + this.duration = undefined; + this.playbackRate = 1; + this.isPlaying = false; + this.hasPlaybackControl = true; + this.source = null; + this.sourceType = 'empty'; + this._startedAt = 0; + this._progress = 0; + this._connected = false; + this.filters = []; + } + + getOutput() { + return this.gain; + } + + setNodeSource(audioNode) { + this.hasPlaybackControl = false; + this.sourceType = 'audioNode'; + this.source = audioNode; + this.connect(); + return this; + } + + setMediaElementSource(mediaElement) { + this.hasPlaybackControl = false; + this.sourceType = 'mediaNode'; + this.source = this.context.createMediaElementSource(mediaElement); + this.connect(); + return this; + } + + setMediaStreamSource(mediaStream) { + this.hasPlaybackControl = false; + this.sourceType = 'mediaStreamNode'; + this.source = this.context.createMediaStreamSource(mediaStream); + this.connect(); + return this; + } + + setBuffer(audioBuffer) { + this.buffer = audioBuffer; + this.sourceType = 'buffer'; + if (this.autoplay) this.play(); + return this; + } + + play(delay = 0) { + if (this.isPlaying === true) { + console.warn('THREE.Audio: Audio is already playing.'); + return; + } + + if (this.hasPlaybackControl === false) { + console.warn('THREE.Audio: this Audio has no playback control.'); + return; + } + + this._startedAt = this.context.currentTime + delay; + const source = this.context.createBufferSource(); + source.buffer = this.buffer; + source.loop = this.loop; + source.loopStart = this.loopStart; + source.loopEnd = this.loopEnd; + source.onended = this.onEnded.bind(this); + source.start(this._startedAt, this._progress + this.offset, this.duration); + this.isPlaying = true; + this.source = source; + this.setDetune(this.detune); + this.setPlaybackRate(this.playbackRate); + return this.connect(); + } + + pause() { + if (this.hasPlaybackControl === false) { + console.warn('THREE.Audio: this Audio has no playback control.'); + return; + } + + if (this.isPlaying === true) { + // update current progress + this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate; + + if (this.loop === true) { + // ensure _progress does not exceed duration with looped audios + this._progress = this._progress % (this.duration || this.buffer.duration); + } + + this.source.stop(); + this.source.onended = null; + this.isPlaying = false; + } + + return this; + } + + stop() { + if (this.hasPlaybackControl === false) { + console.warn('THREE.Audio: this Audio has no playback control.'); + return; + } + + this._progress = 0; + this.source.stop(); + this.source.onended = null; + this.isPlaying = false; + return this; + } + + connect() { + if (this.filters.length > 0) { + this.source.connect(this.filters[0]); + + for (let i = 1, l = this.filters.length; i < l; i++) { + this.filters[i - 1].connect(this.filters[i]); + } + + this.filters[this.filters.length - 1].connect(this.getOutput()); + } else { + this.source.connect(this.getOutput()); + } + + this._connected = true; + return this; + } + + disconnect() { + if (this.filters.length > 0) { + this.source.disconnect(this.filters[0]); + + for (let i = 1, l = this.filters.length; i < l; i++) { + this.filters[i - 1].disconnect(this.filters[i]); + } + + this.filters[this.filters.length - 1].disconnect(this.getOutput()); + } else { + this.source.disconnect(this.getOutput()); + } + + this._connected = false; + return this; + } + + getFilters() { + return this.filters; + } + + setFilters(value) { + if (!value) value = []; + + if (this._connected === true) { + this.disconnect(); + this.filters = value.slice(); + this.connect(); + } else { + this.filters = value.slice(); + } + + return this; + } + + setDetune(value) { + this.detune = value; + if (this.source.detune === undefined) return; // only set detune when available + + if (this.isPlaying === true) { + this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01); + } + + return this; + } + + getDetune() { + return this.detune; + } + + getFilter() { + return this.getFilters()[0]; + } + + setFilter(filter) { + return this.setFilters(filter ? [filter] : []); + } + + setPlaybackRate(value) { + if (this.hasPlaybackControl === false) { + console.warn('THREE.Audio: this Audio has no playback control.'); + return; + } + + this.playbackRate = value; + + if (this.isPlaying === true) { + this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01); + } + + return this; + } + + getPlaybackRate() { + return this.playbackRate; + } + + onEnded() { + this.isPlaying = false; + } + + getLoop() { + if (this.hasPlaybackControl === false) { + console.warn('THREE.Audio: this Audio has no playback control.'); + return false; + } + + return this.loop; + } + + setLoop(value) { + if (this.hasPlaybackControl === false) { + console.warn('THREE.Audio: this Audio has no playback control.'); + return; + } + + this.loop = value; + + if (this.isPlaying === true) { + this.source.loop = this.loop; + } + + return this; + } + + setLoopStart(value) { + this.loopStart = value; + return this; + } + + setLoopEnd(value) { + this.loopEnd = value; + return this; + } + + getVolume() { + return this.gain.gain.value; + } + + setVolume(value) { + this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01); + return this; + } + + } + + const _position = /*@__PURE__*/new Vector3(); + + const _quaternion = /*@__PURE__*/new Quaternion(); + + const _scale = /*@__PURE__*/new Vector3(); + + const _orientation = /*@__PURE__*/new Vector3(); + + class PositionalAudio extends Audio { + constructor(listener) { + super(listener); + this.panner = this.context.createPanner(); + this.panner.panningModel = 'HRTF'; + this.panner.connect(this.gain); + } + + getOutput() { + return this.panner; + } + + getRefDistance() { + return this.panner.refDistance; + } + + setRefDistance(value) { + this.panner.refDistance = value; + return this; + } + + getRolloffFactor() { + return this.panner.rolloffFactor; + } + + setRolloffFactor(value) { + this.panner.rolloffFactor = value; + return this; + } + + getDistanceModel() { + return this.panner.distanceModel; + } + + setDistanceModel(value) { + this.panner.distanceModel = value; + return this; + } + + getMaxDistance() { + return this.panner.maxDistance; + } + + setMaxDistance(value) { + this.panner.maxDistance = value; + return this; + } + + setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) { + this.panner.coneInnerAngle = coneInnerAngle; + this.panner.coneOuterAngle = coneOuterAngle; + this.panner.coneOuterGain = coneOuterGain; + return this; + } + + updateMatrixWorld(force) { + super.updateMatrixWorld(force); + if (this.hasPlaybackControl === true && this.isPlaying === false) return; + this.matrixWorld.decompose(_position, _quaternion, _scale); + + _orientation.set(0, 0, 1).applyQuaternion(_quaternion); + + const panner = this.panner; + + if (panner.positionX) { + // code path for Chrome and Firefox (see #14393) + const endTime = this.context.currentTime + this.listener.timeDelta; + panner.positionX.linearRampToValueAtTime(_position.x, endTime); + panner.positionY.linearRampToValueAtTime(_position.y, endTime); + panner.positionZ.linearRampToValueAtTime(_position.z, endTime); + panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime); + panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime); + panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime); + } else { + panner.setPosition(_position.x, _position.y, _position.z); + panner.setOrientation(_orientation.x, _orientation.y, _orientation.z); + } + } + + } + + class AudioAnalyser { + constructor(audio, fftSize = 2048) { + this.analyser = audio.context.createAnalyser(); + this.analyser.fftSize = fftSize; + this.data = new Uint8Array(this.analyser.frequencyBinCount); + audio.getOutput().connect(this.analyser); + } + + getFrequencyData() { + this.analyser.getByteFrequencyData(this.data); + return this.data; + } + + getAverageFrequency() { + let value = 0; + const data = this.getFrequencyData(); + + for (let i = 0; i < data.length; i++) { + value += data[i]; + } + + return value / data.length; + } + + } + + class PropertyMixer { + constructor(binding, typeName, valueSize) { + this.binding = binding; + this.valueSize = valueSize; + let mixFunction, mixFunctionAdditive, setIdentity; // buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ] + // + // interpolators can use .buffer as their .result + // the data then goes to 'incoming' + // + // 'accu0' and 'accu1' are used frame-interleaved for + // the cumulative result and are compared to detect + // changes + // + // 'orig' stores the original state of the property + // + // 'add' is used for additive cumulative results + // + // 'work' is optional and is only present for quaternion types. It is used + // to store intermediate quaternion multiplication results + + switch (typeName) { + case 'quaternion': + mixFunction = this._slerp; + mixFunctionAdditive = this._slerpAdditive; + setIdentity = this._setAdditiveIdentityQuaternion; + this.buffer = new Float64Array(valueSize * 6); + this._workIndex = 5; + break; + + case 'string': + case 'bool': + mixFunction = this._select; // Use the regular mix function and for additive on these types, + // additive is not relevant for non-numeric types + + mixFunctionAdditive = this._select; + setIdentity = this._setAdditiveIdentityOther; + this.buffer = new Array(valueSize * 5); + break; + + default: + mixFunction = this._lerp; + mixFunctionAdditive = this._lerpAdditive; + setIdentity = this._setAdditiveIdentityNumeric; + this.buffer = new Float64Array(valueSize * 5); + } + + this._mixBufferRegion = mixFunction; + this._mixBufferRegionAdditive = mixFunctionAdditive; + this._setIdentity = setIdentity; + this._origIndex = 3; + this._addIndex = 4; + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + this.useCount = 0; + this.referenceCount = 0; + } // accumulate data in the 'incoming' region into 'accu' + + + accumulate(accuIndex, weight) { + // note: happily accumulating nothing when weight = 0, the caller knows + // the weight and shouldn't have made the call in the first place + const buffer = this.buffer, + stride = this.valueSize, + offset = accuIndex * stride + stride; + let currentWeight = this.cumulativeWeight; + + if (currentWeight === 0) { + // accuN := incoming * weight + for (let i = 0; i !== stride; ++i) { + buffer[offset + i] = buffer[i]; + } + + currentWeight = weight; + } else { + // accuN := accuN + incoming * weight + currentWeight += weight; + const mix = weight / currentWeight; + + this._mixBufferRegion(buffer, offset, 0, mix, stride); + } + + this.cumulativeWeight = currentWeight; + } // accumulate data in the 'incoming' region into 'add' + + + accumulateAdditive(weight) { + const buffer = this.buffer, + stride = this.valueSize, + offset = stride * this._addIndex; + + if (this.cumulativeWeightAdditive === 0) { + // add = identity + this._setIdentity(); + } // add := add + incoming * weight + + + this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride); + + this.cumulativeWeightAdditive += weight; + } // apply the state of 'accu' to the binding when accus differ + + + apply(accuIndex) { + const stride = this.valueSize, + buffer = this.buffer, + offset = accuIndex * stride + stride, + weight = this.cumulativeWeight, + weightAdditive = this.cumulativeWeightAdditive, + binding = this.binding; + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + + if (weight < 1) { + // accuN := accuN + original * ( 1 - cumulativeWeight ) + const originalValueOffset = stride * this._origIndex; + + this._mixBufferRegion(buffer, offset, originalValueOffset, 1 - weight, stride); + } + + if (weightAdditive > 0) { + // accuN := accuN + additive accuN + this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride); + } + + for (let i = stride, e = stride + stride; i !== e; ++i) { + if (buffer[i] !== buffer[i + stride]) { + // value has changed -> update scene graph + binding.setValue(buffer, offset); + break; + } + } + } // remember the state of the bound property and copy it to both accus + + + saveOriginalState() { + const binding = this.binding; + const buffer = this.buffer, + stride = this.valueSize, + originalValueOffset = stride * this._origIndex; + binding.getValue(buffer, originalValueOffset); // accu[0..1] := orig -- initially detect changes against the original + + for (let i = stride, e = originalValueOffset; i !== e; ++i) { + buffer[i] = buffer[originalValueOffset + i % stride]; + } // Add to identity for additive + + + this._setIdentity(); + + this.cumulativeWeight = 0; + this.cumulativeWeightAdditive = 0; + } // apply the state previously taken via 'saveOriginalState' to the binding + + + restoreOriginalState() { + const originalValueOffset = this.valueSize * 3; + this.binding.setValue(this.buffer, originalValueOffset); + } + + _setAdditiveIdentityNumeric() { + const startIndex = this._addIndex * this.valueSize; + const endIndex = startIndex + this.valueSize; + + for (let i = startIndex; i < endIndex; i++) { + this.buffer[i] = 0; + } + } + + _setAdditiveIdentityQuaternion() { + this._setAdditiveIdentityNumeric(); + + this.buffer[this._addIndex * this.valueSize + 3] = 1; + } + + _setAdditiveIdentityOther() { + const startIndex = this._origIndex * this.valueSize; + const targetIndex = this._addIndex * this.valueSize; + + for (let i = 0; i < this.valueSize; i++) { + this.buffer[targetIndex + i] = this.buffer[startIndex + i]; + } + } // mix functions + + + _select(buffer, dstOffset, srcOffset, t, stride) { + if (t >= 0.5) { + for (let i = 0; i !== stride; ++i) { + buffer[dstOffset + i] = buffer[srcOffset + i]; + } + } + } + + _slerp(buffer, dstOffset, srcOffset, t) { + Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t); + } + + _slerpAdditive(buffer, dstOffset, srcOffset, t, stride) { + const workOffset = this._workIndex * stride; // Store result in intermediate buffer offset + + Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset); // Slerp to the intermediate result + + Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t); + } + + _lerp(buffer, dstOffset, srcOffset, t, stride) { + const s = 1 - t; + + for (let i = 0; i !== stride; ++i) { + const j = dstOffset + i; + buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t; + } + } + + _lerpAdditive(buffer, dstOffset, srcOffset, t, stride) { + for (let i = 0; i !== stride; ++i) { + const j = dstOffset + i; + buffer[j] = buffer[j] + buffer[srcOffset + i] * t; + } + } + + } + + // Characters [].:/ are reserved for track binding syntax. + const _RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; + + const _reservedRe = new RegExp('[' + _RESERVED_CHARS_RE + ']', 'g'); // Attempts to allow node names from any language. ES5's `\w` regexp matches + // only latin characters, and the unicode \p{L} is not yet supported. So + // instead, we exclude reserved characters and match everything else. + + + const _wordChar = '[^' + _RESERVED_CHARS_RE + ']'; + + const _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace('\\.', '') + ']'; // Parent directories, delimited by '/' or ':'. Currently unused, but must + // be matched to parse the rest of the track name. + + + const _directoryRe = /((?:WC+[\/:])*)/.source.replace('WC', _wordChar); // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. + + + const _nodeRe = /(WCOD+)?/.source.replace('WCOD', _wordCharOrDot); // Object on target node, and accessor. May not contain reserved + // characters. Accessor may contain any character except closing bracket. + + + const _objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace('WC', _wordChar); // Property and accessor. May not contain reserved characters. Accessor may + // contain any non-bracket characters. + + + const _propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace('WC', _wordChar); + + const _trackRe = new RegExp('' + '^' + _directoryRe + _nodeRe + _objectRe + _propertyRe + '$'); + + const _supportedObjectNames = ['material', 'materials', 'bones']; + + class Composite { + constructor(targetGroup, path, optionalParsedPath) { + const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path); + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_(path, parsedPath); + } + + getValue(array, offset) { + this.bind(); // bind all binding + + const firstValidIndex = this._targetGroup.nCachedObjects_, + binding = this._bindings[firstValidIndex]; // and only call .getValue on the first + + if (binding !== undefined) binding.getValue(array, offset); + } + + setValue(array, offset) { + const bindings = this._bindings; + + for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) { + bindings[i].setValue(array, offset); + } + } + + bind() { + const bindings = this._bindings; + + for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) { + bindings[i].bind(); + } + } + + unbind() { + const bindings = this._bindings; + + for (let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) { + bindings[i].unbind(); + } + } + + } // Note: This class uses a State pattern on a per-method basis: + // 'bind' sets 'this.getValue' / 'setValue' and shadows the + // prototype version of these methods with one that represents + // the bound state. When the property is not found, the methods + // become no-ops. + + + class PropertyBinding { + constructor(rootNode, path, parsedPath) { + this.path = path; + this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path); + this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode; + this.rootNode = rootNode; // initial state of these methods that calls 'bind' + + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + } + + static create(root, path, parsedPath) { + if (!(root && root.isAnimationObjectGroup)) { + return new PropertyBinding(root, path, parsedPath); + } else { + return new PropertyBinding.Composite(root, path, parsedPath); + } + } + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name Node name to be sanitized. + * @return {string} + */ + + + static sanitizeNodeName(name) { + return name.replace(/\s/g, '_').replace(_reservedRe, ''); + } + + static parseTrackName(trackName) { + const matches = _trackRe.exec(trackName); + + if (!matches) { + throw new Error('PropertyBinding: Cannot parse trackName: ' + trackName); + } + + const results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[2], + objectName: matches[3], + objectIndex: matches[4], + propertyName: matches[5], + // required + propertyIndex: matches[6] + }; + const lastDot = results.nodeName && results.nodeName.lastIndexOf('.'); + + if (lastDot !== undefined && lastDot !== -1) { + const objectName = results.nodeName.substring(lastDot + 1); // Object names must be checked against an allowlist. Otherwise, there + // is no way to parse 'foo.bar.baz': 'baz' must be a property, but + // 'bar' could be the objectName, or part of a nodeName (which can + // include '.' characters). + + if (_supportedObjectNames.indexOf(objectName) !== -1) { + results.nodeName = results.nodeName.substring(0, lastDot); + results.objectName = objectName; + } + } + + if (results.propertyName === null || results.propertyName.length === 0) { + throw new Error('PropertyBinding: can not parse propertyName from trackName: ' + trackName); + } + + return results; + } + + static findNode(root, nodeName) { + if (!nodeName || nodeName === '' || nodeName === '.' || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) { + return root; + } // search into skeleton bones. + + + if (root.skeleton) { + const bone = root.skeleton.getBoneByName(nodeName); + + if (bone !== undefined) { + return bone; + } + } // search into node subtree. + + + if (root.children) { + const searchNodeSubtree = function (children) { + for (let i = 0; i < children.length; i++) { + const childNode = children[i]; + + if (childNode.name === nodeName || childNode.uuid === nodeName) { + return childNode; + } + + const result = searchNodeSubtree(childNode.children); + if (result) return result; + } + + return null; + }; + + const subTreeNode = searchNodeSubtree(root.children); + + if (subTreeNode) { + return subTreeNode; + } + } + + return null; + } // these are used to "bind" a nonexistent property + + + _getValue_unavailable() {} + + _setValue_unavailable() {} // Getters + + + _getValue_direct(buffer, offset) { + buffer[offset] = this.targetObject[this.propertyName]; + } + + _getValue_array(buffer, offset) { + const source = this.resolvedProperty; + + for (let i = 0, n = source.length; i !== n; ++i) { + buffer[offset++] = source[i]; + } + } + + _getValue_arrayElement(buffer, offset) { + buffer[offset] = this.resolvedProperty[this.propertyIndex]; + } + + _getValue_toArray(buffer, offset) { + this.resolvedProperty.toArray(buffer, offset); + } // Direct + + + _setValue_direct(buffer, offset) { + this.targetObject[this.propertyName] = buffer[offset]; + } + + _setValue_direct_setNeedsUpdate(buffer, offset) { + this.targetObject[this.propertyName] = buffer[offset]; + this.targetObject.needsUpdate = true; + } + + _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) { + this.targetObject[this.propertyName] = buffer[offset]; + this.targetObject.matrixWorldNeedsUpdate = true; + } // EntireArray + + + _setValue_array(buffer, offset) { + const dest = this.resolvedProperty; + + for (let i = 0, n = dest.length; i !== n; ++i) { + dest[i] = buffer[offset++]; + } + } + + _setValue_array_setNeedsUpdate(buffer, offset) { + const dest = this.resolvedProperty; + + for (let i = 0, n = dest.length; i !== n; ++i) { + dest[i] = buffer[offset++]; + } + + this.targetObject.needsUpdate = true; + } + + _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) { + const dest = this.resolvedProperty; + + for (let i = 0, n = dest.length; i !== n; ++i) { + dest[i] = buffer[offset++]; + } + + this.targetObject.matrixWorldNeedsUpdate = true; + } // ArrayElement + + + _setValue_arrayElement(buffer, offset) { + this.resolvedProperty[this.propertyIndex] = buffer[offset]; + } + + _setValue_arrayElement_setNeedsUpdate(buffer, offset) { + this.resolvedProperty[this.propertyIndex] = buffer[offset]; + this.targetObject.needsUpdate = true; + } + + _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) { + this.resolvedProperty[this.propertyIndex] = buffer[offset]; + this.targetObject.matrixWorldNeedsUpdate = true; + } // HasToFromArray + + + _setValue_fromArray(buffer, offset) { + this.resolvedProperty.fromArray(buffer, offset); + } + + _setValue_fromArray_setNeedsUpdate(buffer, offset) { + this.resolvedProperty.fromArray(buffer, offset); + this.targetObject.needsUpdate = true; + } + + _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) { + this.resolvedProperty.fromArray(buffer, offset); + this.targetObject.matrixWorldNeedsUpdate = true; + } + + _getValue_unbound(targetArray, offset) { + this.bind(); + this.getValue(targetArray, offset); + } + + _setValue_unbound(sourceArray, offset) { + this.bind(); + this.setValue(sourceArray, offset); + } // create getter / setter pair for a property in the scene graph + + + bind() { + let targetObject = this.node; + const parsedPath = this.parsedPath; + const objectName = parsedPath.objectName; + const propertyName = parsedPath.propertyName; + let propertyIndex = parsedPath.propertyIndex; + + if (!targetObject) { + targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode; + this.node = targetObject; + } // set fail state so we can just 'return' on error + + + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; // ensure there is a value node + + if (!targetObject) { + console.error('THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.'); + return; + } + + if (objectName) { + let objectIndex = parsedPath.objectIndex; // special cases were we need to reach deeper into the hierarchy to get the face materials.... + + switch (objectName) { + case 'materials': + if (!targetObject.material) { + console.error('THREE.PropertyBinding: Can not bind to material as node does not have a material.', this); + return; + } + + if (!targetObject.material.materials) { + console.error('THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this); + return; + } + + targetObject = targetObject.material.materials; + break; + + case 'bones': + if (!targetObject.skeleton) { + console.error('THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this); + return; + } // potential future optimization: skip this if propertyIndex is already an integer + // and convert the integer string to a true integer. + + + targetObject = targetObject.skeleton.bones; // support resolving morphTarget names into indices. + + for (let i = 0; i < targetObject.length; i++) { + if (targetObject[i].name === objectIndex) { + objectIndex = i; + break; + } + } + + break; + + default: + if (targetObject[objectName] === undefined) { + console.error('THREE.PropertyBinding: Can not bind to objectName of node undefined.', this); + return; + } + + targetObject = targetObject[objectName]; + } + + if (objectIndex !== undefined) { + if (targetObject[objectIndex] === undefined) { + console.error('THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject); + return; + } + + targetObject = targetObject[objectIndex]; + } + } // resolve property + + + const nodeProperty = targetObject[propertyName]; + + if (nodeProperty === undefined) { + const nodeName = parsedPath.nodeName; + console.error('THREE.PropertyBinding: Trying to update property for track: ' + nodeName + '.' + propertyName + ' but it wasn\'t found.', targetObject); + return; + } // determine versioning scheme + + + let versioning = this.Versioning.None; + this.targetObject = targetObject; + + if (targetObject.needsUpdate !== undefined) { + // material + versioning = this.Versioning.NeedsUpdate; + } else if (targetObject.matrixWorldNeedsUpdate !== undefined) { + // node transform + versioning = this.Versioning.MatrixWorldNeedsUpdate; + } // determine how the property gets bound + + + let bindingType = this.BindingType.Direct; + + if (propertyIndex !== undefined) { + // access a sub element of the property array (only primitives are supported right now) + if (propertyName === 'morphTargetInfluences') { + // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. + // support resolving morphTarget names into indices. + if (!targetObject.geometry) { + console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this); + return; + } + + if (targetObject.geometry.isBufferGeometry) { + if (!targetObject.geometry.morphAttributes) { + console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this); + return; + } + + if (targetObject.morphTargetDictionary[propertyIndex] !== undefined) { + propertyIndex = targetObject.morphTargetDictionary[propertyIndex]; + } + } else { + console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this); + return; + } + } + + bindingType = this.BindingType.ArrayElement; + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + } else if (nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined) { + // must use copy for Object3D.Euler/Quaternion + bindingType = this.BindingType.HasFromToArray; + this.resolvedProperty = nodeProperty; + } else if (Array.isArray(nodeProperty)) { + bindingType = this.BindingType.EntireArray; + this.resolvedProperty = nodeProperty; + } else { + this.propertyName = propertyName; + } // select getter / setter + + + this.getValue = this.GetterByBindingType[bindingType]; + this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning]; + } + + unbind() { + this.node = null; // back to the prototype version of getValue / setValue + // note: avoiding to mutate the shape of 'this' via 'delete' + + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + } + + } + + PropertyBinding.Composite = Composite; + PropertyBinding.prototype.BindingType = { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 + }; + PropertyBinding.prototype.Versioning = { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 + }; + PropertyBinding.prototype.GetterByBindingType = [PropertyBinding.prototype._getValue_direct, PropertyBinding.prototype._getValue_array, PropertyBinding.prototype._getValue_arrayElement, PropertyBinding.prototype._getValue_toArray]; + PropertyBinding.prototype.SetterByBindingTypeAndVersioning = [[// Direct + PropertyBinding.prototype._setValue_direct, PropertyBinding.prototype._setValue_direct_setNeedsUpdate, PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate], [// EntireArray + PropertyBinding.prototype._setValue_array, PropertyBinding.prototype._setValue_array_setNeedsUpdate, PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate], [// ArrayElement + PropertyBinding.prototype._setValue_arrayElement, PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate, PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate], [// HasToFromArray + PropertyBinding.prototype._setValue_fromArray, PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate, PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]]; + + /** + * + * A group of objects that receives a shared animation state. + * + * Usage: + * + * - Add objects you would otherwise pass as 'root' to the + * constructor or the .clipAction method of AnimationMixer. + * + * - Instead pass this object as 'root'. + * + * - You can also add and remove objects later when the mixer + * is running. + * + * Note: + * + * Objects of this class appear as one object to the mixer, + * so cache control of the individual objects must be done + * on the group. + * + * Limitation: + * + * - The animated properties must be compatible among the + * all objects in the group. + * + * - A single property can either be controlled through a + * target group or directly, but not both. + */ + + class AnimationObjectGroup { + constructor() { + this.uuid = generateUUID(); // cached objects followed by the active ones + + this._objects = Array.prototype.slice.call(arguments); + this.nCachedObjects_ = 0; // threshold + // note: read by PropertyBinding.Composite + + const indices = {}; + this._indicesByUUID = indices; // for bookkeeping + + for (let i = 0, n = arguments.length; i !== n; ++i) { + indices[arguments[i].uuid] = i; + } + + this._paths = []; // inside: string + + this._parsedPaths = []; // inside: { we don't care, here } + + this._bindings = []; // inside: Array< PropertyBinding > + + this._bindingsIndicesByPath = {}; // inside: indices in these arrays + + const scope = this; + this.stats = { + objects: { + get total() { + return scope._objects.length; + }, + + get inUse() { + return this.total - scope.nCachedObjects_; + } + + }, + + get bindingsPerObject() { + return scope._bindings.length; + } + + }; + } + + add() { + const objects = this._objects, + indicesByUUID = this._indicesByUUID, + paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + nBindings = bindings.length; + let knownObject = undefined, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_; + + for (let i = 0, n = arguments.length; i !== n; ++i) { + const object = arguments[i], + uuid = object.uuid; + let index = indicesByUUID[uuid]; + + if (index === undefined) { + // unknown object -> add it to the ACTIVE region + index = nObjects++; + indicesByUUID[uuid] = index; + objects.push(object); // accounting is done, now do the same for all bindings + + for (let j = 0, m = nBindings; j !== m; ++j) { + bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j])); + } + } else if (index < nCachedObjects) { + knownObject = objects[index]; // move existing object to the ACTIVE region + + const firstActiveIndex = --nCachedObjects, + lastCachedObject = objects[firstActiveIndex]; + indicesByUUID[lastCachedObject.uuid] = index; + objects[index] = lastCachedObject; + indicesByUUID[uuid] = firstActiveIndex; + objects[firstActiveIndex] = object; // accounting is done, now do the same for all bindings + + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j], + lastCached = bindingsForPath[firstActiveIndex]; + let binding = bindingsForPath[index]; + bindingsForPath[index] = lastCached; + + if (binding === undefined) { + // since we do not bother to create new bindings + // for objects that are cached, the binding may + // or may not exist + binding = new PropertyBinding(object, paths[j], parsedPaths[j]); + } + + bindingsForPath[firstActiveIndex] = binding; + } + } else if (objects[index] !== knownObject) { + console.error('THREE.AnimationObjectGroup: Different objects with the same UUID ' + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.'); + } // else the object is already where we want it to be + + } // for arguments + + + this.nCachedObjects_ = nCachedObjects; + } + + remove() { + const objects = this._objects, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + let nCachedObjects = this.nCachedObjects_; + + for (let i = 0, n = arguments.length; i !== n; ++i) { + const object = arguments[i], + uuid = object.uuid, + index = indicesByUUID[uuid]; + + if (index !== undefined && index >= nCachedObjects) { + // move existing object into the CACHED region + const lastCachedIndex = nCachedObjects++, + firstActiveObject = objects[lastCachedIndex]; + indicesByUUID[firstActiveObject.uuid] = index; + objects[index] = firstActiveObject; + indicesByUUID[uuid] = lastCachedIndex; + objects[lastCachedIndex] = object; // accounting is done, now do the same for all bindings + + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j], + firstActive = bindingsForPath[lastCachedIndex], + binding = bindingsForPath[index]; + bindingsForPath[index] = firstActive; + bindingsForPath[lastCachedIndex] = binding; + } + } + } // for arguments + + + this.nCachedObjects_ = nCachedObjects; + } // remove & forget + + + uncache() { + const objects = this._objects, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + let nCachedObjects = this.nCachedObjects_, + nObjects = objects.length; + + for (let i = 0, n = arguments.length; i !== n; ++i) { + const object = arguments[i], + uuid = object.uuid, + index = indicesByUUID[uuid]; + + if (index !== undefined) { + delete indicesByUUID[uuid]; + + if (index < nCachedObjects) { + // object is cached, shrink the CACHED region + const firstActiveIndex = --nCachedObjects, + lastCachedObject = objects[firstActiveIndex], + lastIndex = --nObjects, + lastObject = objects[lastIndex]; // last cached object takes this object's place + + indicesByUUID[lastCachedObject.uuid] = index; + objects[index] = lastCachedObject; // last object goes to the activated slot and pop + + indicesByUUID[lastObject.uuid] = firstActiveIndex; + objects[firstActiveIndex] = lastObject; + objects.pop(); // accounting is done, now do the same for all bindings + + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j], + lastCached = bindingsForPath[firstActiveIndex], + last = bindingsForPath[lastIndex]; + bindingsForPath[index] = lastCached; + bindingsForPath[firstActiveIndex] = last; + bindingsForPath.pop(); + } + } else { + // object is active, just swap with the last and pop + const lastIndex = --nObjects, + lastObject = objects[lastIndex]; + + if (lastIndex > 0) { + indicesByUUID[lastObject.uuid] = index; + } + + objects[index] = lastObject; + objects.pop(); // accounting is done, now do the same for all bindings + + for (let j = 0, m = nBindings; j !== m; ++j) { + const bindingsForPath = bindings[j]; + bindingsForPath[index] = bindingsForPath[lastIndex]; + bindingsForPath.pop(); + } + } // cached or active + + } // if object is known + + } // for arguments + + + this.nCachedObjects_ = nCachedObjects; + } // Internal interface used by befriended PropertyBinding.Composite: + + + subscribe_(path, parsedPath) { + // returns an array of bindings for the given path that is changed + // according to the contained objects in the group + const indicesByPath = this._bindingsIndicesByPath; + let index = indicesByPath[path]; + const bindings = this._bindings; + if (index !== undefined) return bindings[index]; + const paths = this._paths, + parsedPaths = this._parsedPaths, + objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + bindingsForPath = new Array(nObjects); + index = bindings.length; + indicesByPath[path] = index; + paths.push(path); + parsedPaths.push(parsedPath); + bindings.push(bindingsForPath); + + for (let i = nCachedObjects, n = objects.length; i !== n; ++i) { + const object = objects[i]; + bindingsForPath[i] = new PropertyBinding(object, path, parsedPath); + } + + return bindingsForPath; + } + + unsubscribe_(path) { + // tells the group to forget about a property path and no longer + // update the array previously obtained with 'subscribe_' + const indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[path]; + + if (index !== undefined) { + const paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + lastBindingsIndex = bindings.length - 1, + lastBindings = bindings[lastBindingsIndex], + lastBindingsPath = path[lastBindingsIndex]; + indicesByPath[lastBindingsPath] = index; + bindings[index] = lastBindings; + bindings.pop(); + parsedPaths[index] = parsedPaths[lastBindingsIndex]; + parsedPaths.pop(); + paths[index] = paths[lastBindingsIndex]; + paths.pop(); + } + } + + } + + AnimationObjectGroup.prototype.isAnimationObjectGroup = true; + + class AnimationAction { + constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) { + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot; + this.blendMode = blendMode; + const tracks = clip.tracks, + nTracks = tracks.length, + interpolants = new Array(nTracks); + const interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + + for (let i = 0; i !== nTracks; ++i) { + const interpolant = tracks[i].createInterpolant(null); + interpolants[i] = interpolant; + interpolant.settings = interpolantSettings; + } + + this._interpolantSettings = interpolantSettings; + this._interpolants = interpolants; // bound by the mixer + // inside: PropertyMixer (managed by the mixer) + + this._propertyBindings = new Array(nTracks); + this._cacheIndex = null; // for the memory manager + + this._byClipCacheIndex = null; // for the memory manager + + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + this.loop = LoopRepeat; + this._loopCount = -1; // global mixer time when the action is to be started + // it's set back to 'null' upon start of the action + + this._startTime = null; // scaled local time of the action + // gets clamped or wrapped to 0..clip.duration according to loop + + this.time = 0; + this.timeScale = 1; + this._effectiveTimeScale = 1; + this.weight = 1; + this._effectiveWeight = 1; + this.repetitions = Infinity; // no. of repetitions when looping + + this.paused = false; // true -> zero effective time scale + + this.enabled = true; // false -> zero effective weight + + this.clampWhenFinished = false; // keep feeding the last frame? + + this.zeroSlopeAtStart = true; // for smooth interpolation w/o separate + + this.zeroSlopeAtEnd = true; // clips for start, loop and end + } // State & Scheduling + + + play() { + this._mixer._activateAction(this); + + return this; + } + + stop() { + this._mixer._deactivateAction(this); + + return this.reset(); + } + + reset() { + this.paused = false; + this.enabled = true; + this.time = 0; // restart clip + + this._loopCount = -1; // forget previous loops + + this._startTime = null; // forget scheduling + + return this.stopFading().stopWarping(); + } + + isRunning() { + return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this); + } // return true when play has been called + + + isScheduled() { + return this._mixer._isActiveAction(this); + } + + startAt(time) { + this._startTime = time; + return this; + } + + setLoop(mode, repetitions) { + this.loop = mode; + this.repetitions = repetitions; + return this; + } // Weight + // set the weight stopping any scheduled fading + // although .enabled = false yields an effective weight of zero, this + // method does *not* change .enabled, because it would be confusing + + + setEffectiveWeight(weight) { + this.weight = weight; // note: same logic as when updated at runtime + + this._effectiveWeight = this.enabled ? weight : 0; + return this.stopFading(); + } // return the weight considering fading and .enabled + + + getEffectiveWeight() { + return this._effectiveWeight; + } + + fadeIn(duration) { + return this._scheduleFading(duration, 0, 1); + } + + fadeOut(duration) { + return this._scheduleFading(duration, 1, 0); + } + + crossFadeFrom(fadeOutAction, duration, warp) { + fadeOutAction.fadeOut(duration); + this.fadeIn(duration); + + if (warp) { + const fadeInDuration = this._clip.duration, + fadeOutDuration = fadeOutAction._clip.duration, + startEndRatio = fadeOutDuration / fadeInDuration, + endStartRatio = fadeInDuration / fadeOutDuration; + fadeOutAction.warp(1.0, startEndRatio, duration); + this.warp(endStartRatio, 1.0, duration); + } + + return this; + } + + crossFadeTo(fadeInAction, duration, warp) { + return fadeInAction.crossFadeFrom(this, duration, warp); + } + + stopFading() { + const weightInterpolant = this._weightInterpolant; + + if (weightInterpolant !== null) { + this._weightInterpolant = null; + + this._mixer._takeBackControlInterpolant(weightInterpolant); + } + + return this; + } // Time Scale Control + // set the time scale stopping any scheduled warping + // although .paused = true yields an effective time scale of zero, this + // method does *not* change .paused, because it would be confusing + + + setEffectiveTimeScale(timeScale) { + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + return this.stopWarping(); + } // return the time scale considering warping and .paused + + + getEffectiveTimeScale() { + return this._effectiveTimeScale; + } + + setDuration(duration) { + this.timeScale = this._clip.duration / duration; + return this.stopWarping(); + } + + syncWith(action) { + this.time = action.time; + this.timeScale = action.timeScale; + return this.stopWarping(); + } + + halt(duration) { + return this.warp(this._effectiveTimeScale, 0, duration); + } + + warp(startTimeScale, endTimeScale, duration) { + const mixer = this._mixer, + now = mixer.time, + timeScale = this.timeScale; + let interpolant = this._timeScaleInterpolant; + + if (interpolant === null) { + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + } + + const times = interpolant.parameterPositions, + values = interpolant.sampleValues; + times[0] = now; + times[1] = now + duration; + values[0] = startTimeScale / timeScale; + values[1] = endTimeScale / timeScale; + return this; + } + + stopWarping() { + const timeScaleInterpolant = this._timeScaleInterpolant; + + if (timeScaleInterpolant !== null) { + this._timeScaleInterpolant = null; + + this._mixer._takeBackControlInterpolant(timeScaleInterpolant); + } + + return this; + } // Object Accessors + + + getMixer() { + return this._mixer; + } + + getClip() { + return this._clip; + } + + getRoot() { + return this._localRoot || this._mixer._root; + } // Interna + + + _update(time, deltaTime, timeDirection, accuIndex) { + // called by the mixer + if (!this.enabled) { + // call ._updateWeight() to update ._effectiveWeight + this._updateWeight(time); + + return; + } + + const startTime = this._startTime; + + if (startTime !== null) { + // check for scheduled start of action + const timeRunning = (time - startTime) * timeDirection; + + if (timeRunning < 0 || timeDirection === 0) { + return; // yet to come / don't decide when delta = 0 + } // start + + + this._startTime = null; // unschedule + + deltaTime = timeDirection * timeRunning; + } // apply time scale and advance time + + + deltaTime *= this._updateTimeScale(time); + + const clipTime = this._updateTime(deltaTime); // note: _updateTime may disable the action resulting in + // an effective weight of 0 + + + const weight = this._updateWeight(time); + + if (weight > 0) { + const interpolants = this._interpolants; + const propertyMixers = this._propertyBindings; + + switch (this.blendMode) { + case AdditiveAnimationBlendMode: + for (let j = 0, m = interpolants.length; j !== m; ++j) { + interpolants[j].evaluate(clipTime); + propertyMixers[j].accumulateAdditive(weight); + } + + break; + + case NormalAnimationBlendMode: + default: + for (let j = 0, m = interpolants.length; j !== m; ++j) { + interpolants[j].evaluate(clipTime); + propertyMixers[j].accumulate(accuIndex, weight); + } + + } + } + } + + _updateWeight(time) { + let weight = 0; + + if (this.enabled) { + weight = this.weight; + const interpolant = this._weightInterpolant; + + if (interpolant !== null) { + const interpolantValue = interpolant.evaluate(time)[0]; + weight *= interpolantValue; + + if (time > interpolant.parameterPositions[1]) { + this.stopFading(); + + if (interpolantValue === 0) { + // faded out, disable + this.enabled = false; + } + } + } + } + + this._effectiveWeight = weight; + return weight; + } + + _updateTimeScale(time) { + let timeScale = 0; + + if (!this.paused) { + timeScale = this.timeScale; + const interpolant = this._timeScaleInterpolant; + + if (interpolant !== null) { + const interpolantValue = interpolant.evaluate(time)[0]; + timeScale *= interpolantValue; + + if (time > interpolant.parameterPositions[1]) { + this.stopWarping(); + + if (timeScale === 0) { + // motion has halted, pause + this.paused = true; + } else { + // warp done - apply final time scale + this.timeScale = timeScale; + } + } + } + } + + this._effectiveTimeScale = timeScale; + return timeScale; + } + + _updateTime(deltaTime) { + const duration = this._clip.duration; + const loop = this.loop; + let time = this.time + deltaTime; + let loopCount = this._loopCount; + const pingPong = loop === LoopPingPong; + + if (deltaTime === 0) { + if (loopCount === -1) return time; + return pingPong && (loopCount & 1) === 1 ? duration - time : time; + } + + if (loop === LoopOnce) { + if (loopCount === -1) { + // just started + this._loopCount = 0; + + this._setEndings(true, true, false); + } + + handle_stop: { + if (time >= duration) { + time = duration; + } else if (time < 0) { + time = 0; + } else { + this.time = time; + break handle_stop; + } + + if (this.clampWhenFinished) this.paused = true;else this.enabled = false; + this.time = time; + + this._mixer.dispatchEvent({ + type: 'finished', + action: this, + direction: deltaTime < 0 ? -1 : 1 + }); + } + } else { + // repetitive Repeat or PingPong + if (loopCount === -1) { + // just started + if (deltaTime >= 0) { + loopCount = 0; + + this._setEndings(true, this.repetitions === 0, pingPong); + } else { + // when looping in reverse direction, the initial + // transition through zero counts as a repetition, + // so leave loopCount at -1 + this._setEndings(this.repetitions === 0, true, pingPong); + } + } + + if (time >= duration || time < 0) { + // wrap around + const loopDelta = Math.floor(time / duration); // signed + + time -= duration * loopDelta; + loopCount += Math.abs(loopDelta); + const pending = this.repetitions - loopCount; + + if (pending <= 0) { + // have to stop (switch state, clamp time, fire event) + if (this.clampWhenFinished) this.paused = true;else this.enabled = false; + time = deltaTime > 0 ? duration : 0; + this.time = time; + + this._mixer.dispatchEvent({ + type: 'finished', + action: this, + direction: deltaTime > 0 ? 1 : -1 + }); + } else { + // keep running + if (pending === 1) { + // entering the last round + const atStart = deltaTime < 0; + + this._setEndings(atStart, !atStart, pingPong); + } else { + this._setEndings(false, false, pingPong); + } + + this._loopCount = loopCount; + this.time = time; + + this._mixer.dispatchEvent({ + type: 'loop', + action: this, + loopDelta: loopDelta + }); + } + } else { + this.time = time; + } + + if (pingPong && (loopCount & 1) === 1) { + // invert time for the "pong round" + return duration - time; + } + } + + return time; + } + + _setEndings(atStart, atEnd, pingPong) { + const settings = this._interpolantSettings; + + if (pingPong) { + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + } else { + // assuming for LoopOnce atStart == atEnd == true + if (atStart) { + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + } else { + settings.endingStart = WrapAroundEnding; + } + + if (atEnd) { + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + } else { + settings.endingEnd = WrapAroundEnding; + } + } + } + + _scheduleFading(duration, weightNow, weightThen) { + const mixer = this._mixer, + now = mixer.time; + let interpolant = this._weightInterpolant; + + if (interpolant === null) { + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + } + + const times = interpolant.parameterPositions, + values = interpolant.sampleValues; + times[0] = now; + values[0] = weightNow; + times[1] = now + duration; + values[1] = weightThen; + return this; + } + + } + + class AnimationMixer extends EventDispatcher { + constructor(root) { + super(); + this._root = root; + + this._initMemoryManager(); + + this._accuIndex = 0; + this.time = 0; + this.timeScale = 1.0; + } + + _bindAction(action, prototypeAction) { + const root = action._localRoot || this._root, + tracks = action._clip.tracks, + nTracks = tracks.length, + bindings = action._propertyBindings, + interpolants = action._interpolants, + rootUuid = root.uuid, + bindingsByRoot = this._bindingsByRootAndName; + let bindingsByName = bindingsByRoot[rootUuid]; + + if (bindingsByName === undefined) { + bindingsByName = {}; + bindingsByRoot[rootUuid] = bindingsByName; + } + + for (let i = 0; i !== nTracks; ++i) { + const track = tracks[i], + trackName = track.name; + let binding = bindingsByName[trackName]; + + if (binding !== undefined) { + bindings[i] = binding; + } else { + binding = bindings[i]; + + if (binding !== undefined) { + // existing binding, make sure the cache knows + if (binding._cacheIndex === null) { + ++binding.referenceCount; + + this._addInactiveBinding(binding, rootUuid, trackName); + } + + continue; + } + + const path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath; + binding = new PropertyMixer(PropertyBinding.create(root, trackName, path), track.ValueTypeName, track.getValueSize()); + ++binding.referenceCount; + + this._addInactiveBinding(binding, rootUuid, trackName); + + bindings[i] = binding; + } + + interpolants[i].resultBuffer = binding.buffer; + } + } + + _activateAction(action) { + if (!this._isActiveAction(action)) { + if (action._cacheIndex === null) { + // this action has been forgotten by the cache, but the user + // appears to be still using it -> rebind + const rootUuid = (action._localRoot || this._root).uuid, + clipUuid = action._clip.uuid, + actionsForClip = this._actionsByClip[clipUuid]; + + this._bindAction(action, actionsForClip && actionsForClip.knownActions[0]); + + this._addInactiveAction(action, clipUuid, rootUuid); + } + + const bindings = action._propertyBindings; // increment reference counts / sort out state + + for (let i = 0, n = bindings.length; i !== n; ++i) { + const binding = bindings[i]; + + if (binding.useCount++ === 0) { + this._lendBinding(binding); + + binding.saveOriginalState(); + } + } + + this._lendAction(action); + } + } + + _deactivateAction(action) { + if (this._isActiveAction(action)) { + const bindings = action._propertyBindings; // decrement reference counts / sort out state + + for (let i = 0, n = bindings.length; i !== n; ++i) { + const binding = bindings[i]; + + if (--binding.useCount === 0) { + binding.restoreOriginalState(); + + this._takeBackBinding(binding); + } + } + + this._takeBackAction(action); + } + } // Memory manager + + + _initMemoryManager() { + this._actions = []; // 'nActiveActions' followed by inactive ones + + this._nActiveActions = 0; + this._actionsByClip = {}; // inside: + // { + // knownActions: Array< AnimationAction > - used as prototypes + // actionByRoot: AnimationAction - lookup + // } + + this._bindings = []; // 'nActiveBindings' followed by inactive ones + + this._nActiveBindings = 0; + this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > + + this._controlInterpolants = []; // same game as above + + this._nActiveControlInterpolants = 0; + const scope = this; + this.stats = { + actions: { + get total() { + return scope._actions.length; + }, + + get inUse() { + return scope._nActiveActions; + } + + }, + bindings: { + get total() { + return scope._bindings.length; + }, + + get inUse() { + return scope._nActiveBindings; + } + + }, + controlInterpolants: { + get total() { + return scope._controlInterpolants.length; + }, + + get inUse() { + return scope._nActiveControlInterpolants; + } + + } + }; + } // Memory management for AnimationAction objects + + + _isActiveAction(action) { + const index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + } + + _addInactiveAction(action, clipUuid, rootUuid) { + const actions = this._actions, + actionsByClip = this._actionsByClip; + let actionsForClip = actionsByClip[clipUuid]; + + if (actionsForClip === undefined) { + actionsForClip = { + knownActions: [action], + actionByRoot: {} + }; + action._byClipCacheIndex = 0; + actionsByClip[clipUuid] = actionsForClip; + } else { + const knownActions = actionsForClip.knownActions; + action._byClipCacheIndex = knownActions.length; + knownActions.push(action); + } + + action._cacheIndex = actions.length; + actions.push(action); + actionsForClip.actionByRoot[rootUuid] = action; + } + + _removeInactiveAction(action) { + const actions = this._actions, + lastInactiveAction = actions[actions.length - 1], + cacheIndex = action._cacheIndex; + lastInactiveAction._cacheIndex = cacheIndex; + actions[cacheIndex] = lastInactiveAction; + actions.pop(); + action._cacheIndex = null; + const clipUuid = action._clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[clipUuid], + knownActionsForClip = actionsForClip.knownActions, + lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], + byClipCacheIndex = action._byClipCacheIndex; + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[byClipCacheIndex] = lastKnownAction; + knownActionsForClip.pop(); + action._byClipCacheIndex = null; + const actionByRoot = actionsForClip.actionByRoot, + rootUuid = (action._localRoot || this._root).uuid; + delete actionByRoot[rootUuid]; + + if (knownActionsForClip.length === 0) { + delete actionsByClip[clipUuid]; + } + + this._removeInactiveBindingsForAction(action); + } + + _removeInactiveBindingsForAction(action) { + const bindings = action._propertyBindings; + + for (let i = 0, n = bindings.length; i !== n; ++i) { + const binding = bindings[i]; + + if (--binding.referenceCount === 0) { + this._removeInactiveBinding(binding); + } + } + } + + _lendAction(action) { + // [ active actions | inactive actions ] + // [ active actions >| inactive actions ] + // s a + // <-swap-> + // a s + const actions = this._actions, + prevIndex = action._cacheIndex, + lastActiveIndex = this._nActiveActions++, + firstInactiveAction = actions[lastActiveIndex]; + action._cacheIndex = lastActiveIndex; + actions[lastActiveIndex] = action; + firstInactiveAction._cacheIndex = prevIndex; + actions[prevIndex] = firstInactiveAction; + } + + _takeBackAction(action) { + // [ active actions | inactive actions ] + // [ active actions |< inactive actions ] + // a s + // <-swap-> + // s a + const actions = this._actions, + prevIndex = action._cacheIndex, + firstInactiveIndex = --this._nActiveActions, + lastActiveAction = actions[firstInactiveIndex]; + action._cacheIndex = firstInactiveIndex; + actions[firstInactiveIndex] = action; + lastActiveAction._cacheIndex = prevIndex; + actions[prevIndex] = lastActiveAction; + } // Memory management for PropertyMixer objects + + + _addInactiveBinding(binding, rootUuid, trackName) { + const bindingsByRoot = this._bindingsByRootAndName, + bindings = this._bindings; + let bindingByName = bindingsByRoot[rootUuid]; + + if (bindingByName === undefined) { + bindingByName = {}; + bindingsByRoot[rootUuid] = bindingByName; + } + + bindingByName[trackName] = binding; + binding._cacheIndex = bindings.length; + bindings.push(binding); + } + + _removeInactiveBinding(binding) { + const bindings = this._bindings, + propBinding = binding.binding, + rootUuid = propBinding.rootNode.uuid, + trackName = propBinding.path, + bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[rootUuid], + lastInactiveBinding = bindings[bindings.length - 1], + cacheIndex = binding._cacheIndex; + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[cacheIndex] = lastInactiveBinding; + bindings.pop(); + delete bindingByName[trackName]; + + if (Object.keys(bindingByName).length === 0) { + delete bindingsByRoot[rootUuid]; + } + } + + _lendBinding(binding) { + const bindings = this._bindings, + prevIndex = binding._cacheIndex, + lastActiveIndex = this._nActiveBindings++, + firstInactiveBinding = bindings[lastActiveIndex]; + binding._cacheIndex = lastActiveIndex; + bindings[lastActiveIndex] = binding; + firstInactiveBinding._cacheIndex = prevIndex; + bindings[prevIndex] = firstInactiveBinding; + } + + _takeBackBinding(binding) { + const bindings = this._bindings, + prevIndex = binding._cacheIndex, + firstInactiveIndex = --this._nActiveBindings, + lastActiveBinding = bindings[firstInactiveIndex]; + binding._cacheIndex = firstInactiveIndex; + bindings[firstInactiveIndex] = binding; + lastActiveBinding._cacheIndex = prevIndex; + bindings[prevIndex] = lastActiveBinding; + } // Memory management of Interpolants for weight and time scale + + + _lendControlInterpolant() { + const interpolants = this._controlInterpolants, + lastActiveIndex = this._nActiveControlInterpolants++; + let interpolant = interpolants[lastActiveIndex]; + + if (interpolant === undefined) { + interpolant = new LinearInterpolant(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer); + interpolant.__cacheIndex = lastActiveIndex; + interpolants[lastActiveIndex] = interpolant; + } + + return interpolant; + } + + _takeBackControlInterpolant(interpolant) { + const interpolants = this._controlInterpolants, + prevIndex = interpolant.__cacheIndex, + firstInactiveIndex = --this._nActiveControlInterpolants, + lastActiveInterpolant = interpolants[firstInactiveIndex]; + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[firstInactiveIndex] = interpolant; + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[prevIndex] = lastActiveInterpolant; + } // return an action for a clip optionally using a custom root target + // object (this method allocates a lot of dynamic memory in case a + // previously unknown clip/root combination is specified) + + + clipAction(clip, optionalRoot, blendMode) { + const root = optionalRoot || this._root, + rootUuid = root.uuid; + let clipObject = typeof clip === 'string' ? AnimationClip.findByName(root, clip) : clip; + const clipUuid = clipObject !== null ? clipObject.uuid : clip; + const actionsForClip = this._actionsByClip[clipUuid]; + let prototypeAction = null; + + if (blendMode === undefined) { + if (clipObject !== null) { + blendMode = clipObject.blendMode; + } else { + blendMode = NormalAnimationBlendMode; + } + } + + if (actionsForClip !== undefined) { + const existingAction = actionsForClip.actionByRoot[rootUuid]; + + if (existingAction !== undefined && existingAction.blendMode === blendMode) { + return existingAction; + } // we know the clip, so we don't have to parse all + // the bindings again but can just copy + + + prototypeAction = actionsForClip.knownActions[0]; // also, take the clip from the prototype action + + if (clipObject === null) clipObject = prototypeAction._clip; + } // clip must be known when specified via string + + + if (clipObject === null) return null; // allocate all resources required to run it + + const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode); + + this._bindAction(newAction, prototypeAction); // and make the action known to the memory manager + + + this._addInactiveAction(newAction, clipUuid, rootUuid); + + return newAction; + } // get an existing action + + + existingAction(clip, optionalRoot) { + const root = optionalRoot || this._root, + rootUuid = root.uuid, + clipObject = typeof clip === 'string' ? AnimationClip.findByName(root, clip) : clip, + clipUuid = clipObject ? clipObject.uuid : clip, + actionsForClip = this._actionsByClip[clipUuid]; + + if (actionsForClip !== undefined) { + return actionsForClip.actionByRoot[rootUuid] || null; + } + + return null; + } // deactivates all previously scheduled actions + + + stopAllAction() { + const actions = this._actions, + nActions = this._nActiveActions; + + for (let i = nActions - 1; i >= 0; --i) { + actions[i].stop(); + } + + return this; + } // advance the time and update apply the animation + + + update(deltaTime) { + deltaTime *= this.timeScale; + const actions = this._actions, + nActions = this._nActiveActions, + time = this.time += deltaTime, + timeDirection = Math.sign(deltaTime), + accuIndex = this._accuIndex ^= 1; // run active actions + + for (let i = 0; i !== nActions; ++i) { + const action = actions[i]; + + action._update(time, deltaTime, timeDirection, accuIndex); + } // update scene graph + + + const bindings = this._bindings, + nBindings = this._nActiveBindings; + + for (let i = 0; i !== nBindings; ++i) { + bindings[i].apply(accuIndex); + } + + return this; + } // Allows you to seek to a specific time in an animation. + + + setTime(timeInSeconds) { + this.time = 0; // Zero out time attribute for AnimationMixer object; + + for (let i = 0; i < this._actions.length; i++) { + this._actions[i].time = 0; // Zero out time attribute for all associated AnimationAction objects. + } + + return this.update(timeInSeconds); // Update used to set exact time. Returns "this" AnimationMixer object. + } // return this mixer's root target object + + + getRoot() { + return this._root; + } // free all resources specific to a particular clip + + + uncacheClip(clip) { + const actions = this._actions, + clipUuid = clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[clipUuid]; + + if (actionsForClip !== undefined) { + // note: just calling _removeInactiveAction would mess up the + // iteration state and also require updating the state we can + // just throw away + const actionsToRemove = actionsForClip.knownActions; + + for (let i = 0, n = actionsToRemove.length; i !== n; ++i) { + const action = actionsToRemove[i]; + + this._deactivateAction(action); + + const cacheIndex = action._cacheIndex, + lastInactiveAction = actions[actions.length - 1]; + action._cacheIndex = null; + action._byClipCacheIndex = null; + lastInactiveAction._cacheIndex = cacheIndex; + actions[cacheIndex] = lastInactiveAction; + actions.pop(); + + this._removeInactiveBindingsForAction(action); + } + + delete actionsByClip[clipUuid]; + } + } // free all resources specific to a particular root target object + + + uncacheRoot(root) { + const rootUuid = root.uuid, + actionsByClip = this._actionsByClip; + + for (const clipUuid in actionsByClip) { + const actionByRoot = actionsByClip[clipUuid].actionByRoot, + action = actionByRoot[rootUuid]; + + if (action !== undefined) { + this._deactivateAction(action); + + this._removeInactiveAction(action); + } + } + + const bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[rootUuid]; + + if (bindingByName !== undefined) { + for (const trackName in bindingByName) { + const binding = bindingByName[trackName]; + binding.restoreOriginalState(); + + this._removeInactiveBinding(binding); + } + } + } // remove a targeted clip from the cache + + + uncacheAction(clip, optionalRoot) { + const action = this.existingAction(clip, optionalRoot); + + if (action !== null) { + this._deactivateAction(action); + + this._removeInactiveAction(action); + } + } + + } + + AnimationMixer.prototype._controlInterpolantsResultBuffer = new Float32Array(1); + + class Uniform { + constructor(value) { + if (typeof value === 'string') { + console.warn('THREE.Uniform: Type parameter is no longer needed.'); + value = arguments[1]; + } + + this.value = value; + } + + clone() { + return new Uniform(this.value.clone === undefined ? this.value : this.value.clone()); + } + + } + + class InstancedInterleavedBuffer extends InterleavedBuffer { + constructor(array, stride, meshPerAttribute = 1) { + super(array, stride); + this.meshPerAttribute = meshPerAttribute; + } + + copy(source) { + super.copy(source); + this.meshPerAttribute = source.meshPerAttribute; + return this; + } + + clone(data) { + const ib = super.clone(data); + ib.meshPerAttribute = this.meshPerAttribute; + return ib; + } + + toJSON(data) { + const json = super.toJSON(data); + json.isInstancedInterleavedBuffer = true; + json.meshPerAttribute = this.meshPerAttribute; + return json; + } + + } + + InstancedInterleavedBuffer.prototype.isInstancedInterleavedBuffer = true; + + class GLBufferAttribute { + constructor(buffer, type, itemSize, elementSize, count) { + this.buffer = buffer; + this.type = type; + this.itemSize = itemSize; + this.elementSize = elementSize; + this.count = count; + this.version = 0; + } + + set needsUpdate(value) { + if (value === true) this.version++; + } + + setBuffer(buffer) { + this.buffer = buffer; + return this; + } + + setType(type, elementSize) { + this.type = type; + this.elementSize = elementSize; + return this; + } + + setItemSize(itemSize) { + this.itemSize = itemSize; + return this; + } + + setCount(count) { + this.count = count; + return this; + } + + } + + GLBufferAttribute.prototype.isGLBufferAttribute = true; + + class Raycaster { + constructor(origin, direction, near = 0, far = Infinity) { + this.ray = new Ray(origin, direction); // direction is assumed to be normalized (for accurate distance calculations) + + this.near = near; + this.far = far; + this.camera = null; + this.layers = new Layers(); + this.params = { + Mesh: {}, + Line: { + threshold: 1 + }, + LOD: {}, + Points: { + threshold: 1 + }, + Sprite: {} + }; + } + + set(origin, direction) { + // direction is assumed to be normalized (for accurate distance calculations) + this.ray.set(origin, direction); + } + + setFromCamera(coords, camera) { + if (camera && camera.isPerspectiveCamera) { + this.ray.origin.setFromMatrixPosition(camera.matrixWorld); + this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize(); + this.camera = camera; + } else if (camera && camera.isOrthographicCamera) { + this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera); // set origin in plane of camera + + this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld); + this.camera = camera; + } else { + console.error('THREE.Raycaster: Unsupported camera type: ' + camera.type); + } + } + + intersectObject(object, recursive = false, intersects = []) { + intersectObject(object, this, intersects, recursive); + intersects.sort(ascSort); + return intersects; + } + + intersectObjects(objects, recursive = false, intersects = []) { + for (let i = 0, l = objects.length; i < l; i++) { + intersectObject(objects[i], this, intersects, recursive); + } + + intersects.sort(ascSort); + return intersects; + } + + } + + function ascSort(a, b) { + return a.distance - b.distance; + } + + function intersectObject(object, raycaster, intersects, recursive) { + if (object.layers.test(raycaster.layers)) { + object.raycast(raycaster, intersects); + } + + if (recursive === true) { + const children = object.children; + + for (let i = 0, l = children.length; i < l; i++) { + intersectObject(children[i], raycaster, intersects, true); + } + } + } + + /** + * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system + * + * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up. + * The azimuthal angle (theta) is measured from the positive z-axis. + */ + + class Spherical { + constructor(radius = 1, phi = 0, theta = 0) { + this.radius = radius; + this.phi = phi; // polar angle + + this.theta = theta; // azimuthal angle + + return this; + } + + set(radius, phi, theta) { + this.radius = radius; + this.phi = phi; + this.theta = theta; + return this; + } + + copy(other) { + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + return this; + } // restrict phi to be betwee EPS and PI-EPS + + + makeSafe() { + const EPS = 0.000001; + this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi)); + return this; + } + + setFromVector3(v) { + return this.setFromCartesianCoords(v.x, v.y, v.z); + } + + setFromCartesianCoords(x, y, z) { + this.radius = Math.sqrt(x * x + y * y + z * z); + + if (this.radius === 0) { + this.theta = 0; + this.phi = 0; + } else { + this.theta = Math.atan2(x, z); + this.phi = Math.acos(clamp(y / this.radius, -1, 1)); + } + + return this; + } + + clone() { + return new this.constructor().copy(this); + } + + } + + /** + * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system + */ + class Cylindrical { + constructor(radius = 1, theta = 0, y = 0) { + this.radius = radius; // distance from the origin to a point in the x-z plane + + this.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis + + this.y = y; // height above the x-z plane + + return this; + } + + set(radius, theta, y) { + this.radius = radius; + this.theta = theta; + this.y = y; + return this; + } + + copy(other) { + this.radius = other.radius; + this.theta = other.theta; + this.y = other.y; + return this; + } + + setFromVector3(v) { + return this.setFromCartesianCoords(v.x, v.y, v.z); + } + + setFromCartesianCoords(x, y, z) { + this.radius = Math.sqrt(x * x + z * z); + this.theta = Math.atan2(x, z); + this.y = y; + return this; + } + + clone() { + return new this.constructor().copy(this); + } + + } + + const _vector$4 = /*@__PURE__*/new Vector2(); + + class Box2 { + constructor(min = new Vector2(+Infinity, +Infinity), max = new Vector2(-Infinity, -Infinity)) { + this.min = min; + this.max = max; + } + + set(min, max) { + this.min.copy(min); + this.max.copy(max); + return this; + } + + setFromPoints(points) { + this.makeEmpty(); + + for (let i = 0, il = points.length; i < il; i++) { + this.expandByPoint(points[i]); + } + + return this; + } + + setFromCenterAndSize(center, size) { + const halfSize = _vector$4.copy(size).multiplyScalar(0.5); + + this.min.copy(center).sub(halfSize); + this.max.copy(center).add(halfSize); + return this; + } + + clone() { + return new this.constructor().copy(this); + } + + copy(box) { + this.min.copy(box.min); + this.max.copy(box.max); + return this; + } + + makeEmpty() { + this.min.x = this.min.y = +Infinity; + this.max.x = this.max.y = -Infinity; + return this; + } + + isEmpty() { + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + return this.max.x < this.min.x || this.max.y < this.min.y; + } + + getCenter(target) { + return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5); + } + + getSize(target) { + return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min); + } + + expandByPoint(point) { + this.min.min(point); + this.max.max(point); + return this; + } + + expandByVector(vector) { + this.min.sub(vector); + this.max.add(vector); + return this; + } + + expandByScalar(scalar) { + this.min.addScalar(-scalar); + this.max.addScalar(scalar); + return this; + } + + containsPoint(point) { + return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true; + } + + containsBox(box) { + return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y; + } + + getParameter(point, target) { + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y)); + } + + intersectsBox(box) { + // using 4 splitting planes to rule out intersections + return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true; + } + + clampPoint(point, target) { + return target.copy(point).clamp(this.min, this.max); + } + + distanceToPoint(point) { + const clampedPoint = _vector$4.copy(point).clamp(this.min, this.max); + + return clampedPoint.sub(point).length(); + } + + intersect(box) { + this.min.max(box.min); + this.max.min(box.max); + return this; + } + + union(box) { + this.min.min(box.min); + this.max.max(box.max); + return this; + } + + translate(offset) { + this.min.add(offset); + this.max.add(offset); + return this; + } + + equals(box) { + return box.min.equals(this.min) && box.max.equals(this.max); + } + + } + + Box2.prototype.isBox2 = true; + + const _startP = /*@__PURE__*/new Vector3(); + + const _startEnd = /*@__PURE__*/new Vector3(); + + class Line3 { + constructor(start = new Vector3(), end = new Vector3()) { + this.start = start; + this.end = end; + } + + set(start, end) { + this.start.copy(start); + this.end.copy(end); + return this; + } + + copy(line) { + this.start.copy(line.start); + this.end.copy(line.end); + return this; + } + + getCenter(target) { + return target.addVectors(this.start, this.end).multiplyScalar(0.5); + } + + delta(target) { + return target.subVectors(this.end, this.start); + } + + distanceSq() { + return this.start.distanceToSquared(this.end); + } + + distance() { + return this.start.distanceTo(this.end); + } + + at(t, target) { + return this.delta(target).multiplyScalar(t).add(this.start); + } + + closestPointToPointParameter(point, clampToLine) { + _startP.subVectors(point, this.start); + + _startEnd.subVectors(this.end, this.start); + + const startEnd2 = _startEnd.dot(_startEnd); + + const startEnd_startP = _startEnd.dot(_startP); + + let t = startEnd_startP / startEnd2; + + if (clampToLine) { + t = clamp(t, 0, 1); + } + + return t; + } + + closestPointToPoint(point, clampToLine, target) { + const t = this.closestPointToPointParameter(point, clampToLine); + return this.delta(target).multiplyScalar(t).add(this.start); + } + + applyMatrix4(matrix) { + this.start.applyMatrix4(matrix); + this.end.applyMatrix4(matrix); + return this; + } + + equals(line) { + return line.start.equals(this.start) && line.end.equals(this.end); + } + + clone() { + return new this.constructor().copy(this); + } + + } + + class ImmediateRenderObject extends Object3D { + constructor(material) { + super(); + this.material = material; + + this.render = function () {}; + + this.hasPositions = false; + this.hasNormals = false; + this.hasColors = false; + this.hasUvs = false; + this.positionArray = null; + this.normalArray = null; + this.colorArray = null; + this.uvArray = null; + this.count = 0; + } + + } + + ImmediateRenderObject.prototype.isImmediateRenderObject = true; + + const _vector$3 = /*@__PURE__*/new Vector3(); + + class SpotLightHelper extends Object3D { + constructor(light, color) { + super(); + this.light = light; + this.light.updateMatrixWorld(); + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + this.color = color; + const geometry = new BufferGeometry(); + const positions = [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]; + + for (let i = 0, j = 1, l = 32; i < l; i++, j++) { + const p1 = i / l * Math.PI * 2; + const p2 = j / l * Math.PI * 2; + positions.push(Math.cos(p1), Math.sin(p1), 1, Math.cos(p2), Math.sin(p2), 1); + } + + geometry.setAttribute('position', new Float32BufferAttribute(positions, 3)); + const material = new LineBasicMaterial({ + fog: false, + toneMapped: false + }); + this.cone = new LineSegments(geometry, material); + this.add(this.cone); + this.update(); + } + + dispose() { + this.cone.geometry.dispose(); + this.cone.material.dispose(); + } + + update() { + this.light.updateMatrixWorld(); + const coneLength = this.light.distance ? this.light.distance : 1000; + const coneWidth = coneLength * Math.tan(this.light.angle); + this.cone.scale.set(coneWidth, coneWidth, coneLength); + + _vector$3.setFromMatrixPosition(this.light.target.matrixWorld); + + this.cone.lookAt(_vector$3); + + if (this.color !== undefined) { + this.cone.material.color.set(this.color); + } else { + this.cone.material.color.copy(this.light.color); + } + } + + } + + const _vector$2 = /*@__PURE__*/new Vector3(); + + const _boneMatrix = /*@__PURE__*/new Matrix4(); + + const _matrixWorldInv = /*@__PURE__*/new Matrix4(); + + class SkeletonHelper extends LineSegments { + constructor(object) { + const bones = getBoneList(object); + const geometry = new BufferGeometry(); + const vertices = []; + const colors = []; + const color1 = new Color(0, 0, 1); + const color2 = new Color(0, 1, 0); + + for (let i = 0; i < bones.length; i++) { + const bone = bones[i]; + + if (bone.parent && bone.parent.isBone) { + vertices.push(0, 0, 0); + vertices.push(0, 0, 0); + colors.push(color1.r, color1.g, color1.b); + colors.push(color2.r, color2.g, color2.b); + } + } + + geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.setAttribute('color', new Float32BufferAttribute(colors, 3)); + const material = new LineBasicMaterial({ + vertexColors: true, + depthTest: false, + depthWrite: false, + toneMapped: false, + transparent: true + }); + super(geometry, material); + this.type = 'SkeletonHelper'; + this.isSkeletonHelper = true; + this.root = object; + this.bones = bones; + this.matrix = object.matrixWorld; + this.matrixAutoUpdate = false; + } + + updateMatrixWorld(force) { + const bones = this.bones; + const geometry = this.geometry; + const position = geometry.getAttribute('position'); + + _matrixWorldInv.copy(this.root.matrixWorld).invert(); + + for (let i = 0, j = 0; i < bones.length; i++) { + const bone = bones[i]; + + if (bone.parent && bone.parent.isBone) { + _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld); + + _vector$2.setFromMatrixPosition(_boneMatrix); + + position.setXYZ(j, _vector$2.x, _vector$2.y, _vector$2.z); + + _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld); + + _vector$2.setFromMatrixPosition(_boneMatrix); + + position.setXYZ(j + 1, _vector$2.x, _vector$2.y, _vector$2.z); + j += 2; + } + } + + geometry.getAttribute('position').needsUpdate = true; + super.updateMatrixWorld(force); + } + + } + + function getBoneList(object) { + const boneList = []; + + if (object && object.isBone) { + boneList.push(object); + } + + for (let i = 0; i < object.children.length; i++) { + boneList.push.apply(boneList, getBoneList(object.children[i])); + } + + return boneList; + } + + class PointLightHelper extends Mesh { + constructor(light, sphereSize, color) { + const geometry = new SphereGeometry(sphereSize, 4, 2); + const material = new MeshBasicMaterial({ + wireframe: true, + fog: false, + toneMapped: false + }); + super(geometry, material); + this.light = light; + this.light.updateMatrixWorld(); + this.color = color; + this.type = 'PointLightHelper'; + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + this.update(); + /* + // TODO: delete this comment? + const distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 ); + const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); + this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); + this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); + const d = light.distance; + if ( d === 0.0 ) { + this.lightDistance.visible = false; + } else { + this.lightDistance.scale.set( d, d, d ); + } + this.add( this.lightDistance ); + */ + } + + dispose() { + this.geometry.dispose(); + this.material.dispose(); + } + + update() { + if (this.color !== undefined) { + this.material.color.set(this.color); + } else { + this.material.color.copy(this.light.color); + } + /* + const d = this.light.distance; + if ( d === 0.0 ) { + this.lightDistance.visible = false; + } else { + this.lightDistance.visible = true; + this.lightDistance.scale.set( d, d, d ); + } + */ + + } + + } + + const _vector$1 = /*@__PURE__*/new Vector3(); + + const _color1 = /*@__PURE__*/new Color(); + + const _color2 = /*@__PURE__*/new Color(); + + class HemisphereLightHelper extends Object3D { + constructor(light, size, color) { + super(); + this.light = light; + this.light.updateMatrixWorld(); + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + this.color = color; + const geometry = new OctahedronGeometry(size); + geometry.rotateY(Math.PI * 0.5); + this.material = new MeshBasicMaterial({ + wireframe: true, + fog: false, + toneMapped: false + }); + if (this.color === undefined) this.material.vertexColors = true; + const position = geometry.getAttribute('position'); + const colors = new Float32Array(position.count * 3); + geometry.setAttribute('color', new BufferAttribute(colors, 3)); + this.add(new Mesh(geometry, this.material)); + this.update(); + } + + dispose() { + this.children[0].geometry.dispose(); + this.children[0].material.dispose(); + } + + update() { + const mesh = this.children[0]; + + if (this.color !== undefined) { + this.material.color.set(this.color); + } else { + const colors = mesh.geometry.getAttribute('color'); + + _color1.copy(this.light.color); + + _color2.copy(this.light.groundColor); + + for (let i = 0, l = colors.count; i < l; i++) { + const color = i < l / 2 ? _color1 : _color2; + colors.setXYZ(i, color.r, color.g, color.b); + } + + colors.needsUpdate = true; + } + + mesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate()); + } + + } + + class GridHelper extends LineSegments { + constructor(size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888) { + color1 = new Color(color1); + color2 = new Color(color2); + const center = divisions / 2; + const step = size / divisions; + const halfSize = size / 2; + const vertices = [], + colors = []; + + for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) { + vertices.push(-halfSize, 0, k, halfSize, 0, k); + vertices.push(k, 0, -halfSize, k, 0, halfSize); + const color = i === center ? color1 : color2; + color.toArray(colors, j); + j += 3; + color.toArray(colors, j); + j += 3; + color.toArray(colors, j); + j += 3; + color.toArray(colors, j); + j += 3; + } + + const geometry = new BufferGeometry(); + geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.setAttribute('color', new Float32BufferAttribute(colors, 3)); + const material = new LineBasicMaterial({ + vertexColors: true, + toneMapped: false + }); + super(geometry, material); + this.type = 'GridHelper'; + } + + } + + class PolarGridHelper extends LineSegments { + constructor(radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888) { + color1 = new Color(color1); + color2 = new Color(color2); + const vertices = []; + const colors = []; // create the radials + + for (let i = 0; i <= radials; i++) { + const v = i / radials * (Math.PI * 2); + const x = Math.sin(v) * radius; + const z = Math.cos(v) * radius; + vertices.push(0, 0, 0); + vertices.push(x, 0, z); + const color = i & 1 ? color1 : color2; + colors.push(color.r, color.g, color.b); + colors.push(color.r, color.g, color.b); + } // create the circles + + + for (let i = 0; i <= circles; i++) { + const color = i & 1 ? color1 : color2; + const r = radius - radius / circles * i; + + for (let j = 0; j < divisions; j++) { + // first vertex + let v = j / divisions * (Math.PI * 2); + let x = Math.sin(v) * r; + let z = Math.cos(v) * r; + vertices.push(x, 0, z); + colors.push(color.r, color.g, color.b); // second vertex + + v = (j + 1) / divisions * (Math.PI * 2); + x = Math.sin(v) * r; + z = Math.cos(v) * r; + vertices.push(x, 0, z); + colors.push(color.r, color.g, color.b); + } + } + + const geometry = new BufferGeometry(); + geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.setAttribute('color', new Float32BufferAttribute(colors, 3)); + const material = new LineBasicMaterial({ + vertexColors: true, + toneMapped: false + }); + super(geometry, material); + this.type = 'PolarGridHelper'; + } + + } + + const _v1 = /*@__PURE__*/new Vector3(); + + const _v2 = /*@__PURE__*/new Vector3(); + + const _v3 = /*@__PURE__*/new Vector3(); + + class DirectionalLightHelper extends Object3D { + constructor(light, size, color) { + super(); + this.light = light; + this.light.updateMatrixWorld(); + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + this.color = color; + if (size === undefined) size = 1; + let geometry = new BufferGeometry(); + geometry.setAttribute('position', new Float32BufferAttribute([-size, size, 0, size, size, 0, size, -size, 0, -size, -size, 0, -size, size, 0], 3)); + const material = new LineBasicMaterial({ + fog: false, + toneMapped: false + }); + this.lightPlane = new Line(geometry, material); + this.add(this.lightPlane); + geometry = new BufferGeometry(); + geometry.setAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3)); + this.targetLine = new Line(geometry, material); + this.add(this.targetLine); + this.update(); + } + + dispose() { + this.lightPlane.geometry.dispose(); + this.lightPlane.material.dispose(); + this.targetLine.geometry.dispose(); + this.targetLine.material.dispose(); + } + + update() { + _v1.setFromMatrixPosition(this.light.matrixWorld); + + _v2.setFromMatrixPosition(this.light.target.matrixWorld); + + _v3.subVectors(_v2, _v1); + + this.lightPlane.lookAt(_v2); + + if (this.color !== undefined) { + this.lightPlane.material.color.set(this.color); + this.targetLine.material.color.set(this.color); + } else { + this.lightPlane.material.color.copy(this.light.color); + this.targetLine.material.color.copy(this.light.color); + } + + this.targetLine.lookAt(_v2); + this.targetLine.scale.z = _v3.length(); + } + + } + + const _vector = /*@__PURE__*/new Vector3(); + + const _camera = /*@__PURE__*/new Camera(); + /** + * - shows frustum, line of sight and up of the camera + * - suitable for fast updates + * - based on frustum visualization in lightgl.js shadowmap example + * http://evanw.github.com/lightgl.js/tests/shadowmap.html + */ + + + class CameraHelper extends LineSegments { + constructor(camera) { + const geometry = new BufferGeometry(); + const material = new LineBasicMaterial({ + color: 0xffffff, + vertexColors: true, + toneMapped: false + }); + const vertices = []; + const colors = []; + const pointMap = {}; // colors + + const colorFrustum = new Color(0xffaa00); + const colorCone = new Color(0xff0000); + const colorUp = new Color(0x00aaff); + const colorTarget = new Color(0xffffff); + const colorCross = new Color(0x333333); // near + + addLine('n1', 'n2', colorFrustum); + addLine('n2', 'n4', colorFrustum); + addLine('n4', 'n3', colorFrustum); + addLine('n3', 'n1', colorFrustum); // far + + addLine('f1', 'f2', colorFrustum); + addLine('f2', 'f4', colorFrustum); + addLine('f4', 'f3', colorFrustum); + addLine('f3', 'f1', colorFrustum); // sides + + addLine('n1', 'f1', colorFrustum); + addLine('n2', 'f2', colorFrustum); + addLine('n3', 'f3', colorFrustum); + addLine('n4', 'f4', colorFrustum); // cone + + addLine('p', 'n1', colorCone); + addLine('p', 'n2', colorCone); + addLine('p', 'n3', colorCone); + addLine('p', 'n4', colorCone); // up + + addLine('u1', 'u2', colorUp); + addLine('u2', 'u3', colorUp); + addLine('u3', 'u1', colorUp); // target + + addLine('c', 't', colorTarget); + addLine('p', 'c', colorCross); // cross + + addLine('cn1', 'cn2', colorCross); + addLine('cn3', 'cn4', colorCross); + addLine('cf1', 'cf2', colorCross); + addLine('cf3', 'cf4', colorCross); + + function addLine(a, b, color) { + addPoint(a, color); + addPoint(b, color); + } + + function addPoint(id, color) { + vertices.push(0, 0, 0); + colors.push(color.r, color.g, color.b); + + if (pointMap[id] === undefined) { + pointMap[id] = []; + } + + pointMap[id].push(vertices.length / 3 - 1); + } + + geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.setAttribute('color', new Float32BufferAttribute(colors, 3)); + super(geometry, material); + this.type = 'CameraHelper'; + this.camera = camera; + if (this.camera.updateProjectionMatrix) this.camera.updateProjectionMatrix(); + this.matrix = camera.matrixWorld; + this.matrixAutoUpdate = false; + this.pointMap = pointMap; + this.update(); + } + + update() { + const geometry = this.geometry; + const pointMap = this.pointMap; + const w = 1, + h = 1; // we need just camera projection matrix inverse + // world matrix must be identity + + _camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse); // center / target + + + setPoint('c', pointMap, geometry, _camera, 0, 0, -1); + setPoint('t', pointMap, geometry, _camera, 0, 0, 1); // near + + setPoint('n1', pointMap, geometry, _camera, -w, -h, -1); + setPoint('n2', pointMap, geometry, _camera, w, -h, -1); + setPoint('n3', pointMap, geometry, _camera, -w, h, -1); + setPoint('n4', pointMap, geometry, _camera, w, h, -1); // far + + setPoint('f1', pointMap, geometry, _camera, -w, -h, 1); + setPoint('f2', pointMap, geometry, _camera, w, -h, 1); + setPoint('f3', pointMap, geometry, _camera, -w, h, 1); + setPoint('f4', pointMap, geometry, _camera, w, h, 1); // up + + setPoint('u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, -1); + setPoint('u2', pointMap, geometry, _camera, -w * 0.7, h * 1.1, -1); + setPoint('u3', pointMap, geometry, _camera, 0, h * 2, -1); // cross + + setPoint('cf1', pointMap, geometry, _camera, -w, 0, 1); + setPoint('cf2', pointMap, geometry, _camera, w, 0, 1); + setPoint('cf3', pointMap, geometry, _camera, 0, -h, 1); + setPoint('cf4', pointMap, geometry, _camera, 0, h, 1); + setPoint('cn1', pointMap, geometry, _camera, -w, 0, -1); + setPoint('cn2', pointMap, geometry, _camera, w, 0, -1); + setPoint('cn3', pointMap, geometry, _camera, 0, -h, -1); + setPoint('cn4', pointMap, geometry, _camera, 0, h, -1); + geometry.getAttribute('position').needsUpdate = true; + } + + dispose() { + this.geometry.dispose(); + this.material.dispose(); + } + + } + + function setPoint(point, pointMap, geometry, camera, x, y, z) { + _vector.set(x, y, z).unproject(camera); + + const points = pointMap[point]; + + if (points !== undefined) { + const position = geometry.getAttribute('position'); + + for (let i = 0, l = points.length; i < l; i++) { + position.setXYZ(points[i], _vector.x, _vector.y, _vector.z); + } + } + } + + const _box = /*@__PURE__*/new Box3(); + + class BoxHelper extends LineSegments { + constructor(object, color = 0xffff00) { + const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]); + const positions = new Float32Array(8 * 3); + const geometry = new BufferGeometry(); + geometry.setIndex(new BufferAttribute(indices, 1)); + geometry.setAttribute('position', new BufferAttribute(positions, 3)); + super(geometry, new LineBasicMaterial({ + color: color, + toneMapped: false + })); + this.object = object; + this.type = 'BoxHelper'; + this.matrixAutoUpdate = false; + this.update(); + } + + update(object) { + if (object !== undefined) { + console.warn('THREE.BoxHelper: .update() has no longer arguments.'); + } + + if (this.object !== undefined) { + _box.setFromObject(this.object); + } + + if (_box.isEmpty()) return; + const min = _box.min; + const max = _box.max; + /* + 5____4 + 1/___0/| + | 6__|_7 + 2/___3/ + 0: max.x, max.y, max.z + 1: min.x, max.y, max.z + 2: min.x, min.y, max.z + 3: max.x, min.y, max.z + 4: max.x, max.y, min.z + 5: min.x, max.y, min.z + 6: min.x, min.y, min.z + 7: max.x, min.y, min.z + */ + + const position = this.geometry.attributes.position; + const array = position.array; + array[0] = max.x; + array[1] = max.y; + array[2] = max.z; + array[3] = min.x; + array[4] = max.y; + array[5] = max.z; + array[6] = min.x; + array[7] = min.y; + array[8] = max.z; + array[9] = max.x; + array[10] = min.y; + array[11] = max.z; + array[12] = max.x; + array[13] = max.y; + array[14] = min.z; + array[15] = min.x; + array[16] = max.y; + array[17] = min.z; + array[18] = min.x; + array[19] = min.y; + array[20] = min.z; + array[21] = max.x; + array[22] = min.y; + array[23] = min.z; + position.needsUpdate = true; + this.geometry.computeBoundingSphere(); + } + + setFromObject(object) { + this.object = object; + this.update(); + return this; + } + + copy(source) { + LineSegments.prototype.copy.call(this, source); + this.object = source.object; + return this; + } + + } + + class Box3Helper extends LineSegments { + constructor(box, color = 0xffff00) { + const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]); + const positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1]; + const geometry = new BufferGeometry(); + geometry.setIndex(new BufferAttribute(indices, 1)); + geometry.setAttribute('position', new Float32BufferAttribute(positions, 3)); + super(geometry, new LineBasicMaterial({ + color: color, + toneMapped: false + })); + this.box = box; + this.type = 'Box3Helper'; + this.geometry.computeBoundingSphere(); + } + + updateMatrixWorld(force) { + const box = this.box; + if (box.isEmpty()) return; + box.getCenter(this.position); + box.getSize(this.scale); + this.scale.multiplyScalar(0.5); + super.updateMatrixWorld(force); + } + + } + + class PlaneHelper extends Line { + constructor(plane, size = 1, hex = 0xffff00) { + const color = hex; + const positions = [1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0]; + const geometry = new BufferGeometry(); + geometry.setAttribute('position', new Float32BufferAttribute(positions, 3)); + geometry.computeBoundingSphere(); + super(geometry, new LineBasicMaterial({ + color: color, + toneMapped: false + })); + this.type = 'PlaneHelper'; + this.plane = plane; + this.size = size; + const positions2 = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1]; + const geometry2 = new BufferGeometry(); + geometry2.setAttribute('position', new Float32BufferAttribute(positions2, 3)); + geometry2.computeBoundingSphere(); + this.add(new Mesh(geometry2, new MeshBasicMaterial({ + color: color, + opacity: 0.2, + transparent: true, + depthWrite: false, + toneMapped: false + }))); + } + + updateMatrixWorld(force) { + let scale = -this.plane.constant; + if (Math.abs(scale) < 1e-8) scale = 1e-8; // sign does not matter + + this.scale.set(0.5 * this.size, 0.5 * this.size, scale); + this.children[0].material.side = scale < 0 ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here + + this.lookAt(this.plane.normal); + super.updateMatrixWorld(force); + } + + } + + const _axis = /*@__PURE__*/new Vector3(); + + let _lineGeometry, _coneGeometry; + + class ArrowHelper extends Object3D { + // dir is assumed to be normalized + constructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2) { + super(); + this.type = 'ArrowHelper'; + + if (_lineGeometry === undefined) { + _lineGeometry = new BufferGeometry(); + + _lineGeometry.setAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3)); + + _coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1); + + _coneGeometry.translate(0, -0.5, 0); + } + + this.position.copy(origin); + this.line = new Line(_lineGeometry, new LineBasicMaterial({ + color: color, + toneMapped: false + })); + this.line.matrixAutoUpdate = false; + this.add(this.line); + this.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({ + color: color, + toneMapped: false + })); + this.cone.matrixAutoUpdate = false; + this.add(this.cone); + this.setDirection(dir); + this.setLength(length, headLength, headWidth); + } + + setDirection(dir) { + // dir is assumed to be normalized + if (dir.y > 0.99999) { + this.quaternion.set(0, 0, 0, 1); + } else if (dir.y < -0.99999) { + this.quaternion.set(1, 0, 0, 0); + } else { + _axis.set(dir.z, 0, -dir.x).normalize(); + + const radians = Math.acos(dir.y); + this.quaternion.setFromAxisAngle(_axis, radians); + } + } + + setLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) { + this.line.scale.set(1, Math.max(0.0001, length - headLength), 1); // see #17458 + + this.line.updateMatrix(); + this.cone.scale.set(headWidth, headLength, headWidth); + this.cone.position.y = length; + this.cone.updateMatrix(); + } + + setColor(color) { + this.line.material.color.set(color); + this.cone.material.color.set(color); + } + + copy(source) { + super.copy(source, false); + this.line.copy(source.line); + this.cone.copy(source.cone); + return this; + } + + } + + class AxesHelper extends LineSegments { + constructor(size = 1) { + const vertices = [0, 0, 0, size, 0, 0, 0, 0, 0, 0, size, 0, 0, 0, 0, 0, 0, size]; + const colors = [1, 0, 0, 1, 0.6, 0, 0, 1, 0, 0.6, 1, 0, 0, 0, 1, 0, 0.6, 1]; + const geometry = new BufferGeometry(); + geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3)); + geometry.setAttribute('color', new Float32BufferAttribute(colors, 3)); + const material = new LineBasicMaterial({ + vertexColors: true, + toneMapped: false + }); + super(geometry, material); + this.type = 'AxesHelper'; + } + + setColors(xAxisColor, yAxisColor, zAxisColor) { + const color = new Color(); + const array = this.geometry.attributes.color.array; + color.set(xAxisColor); + color.toArray(array, 0); + color.toArray(array, 3); + color.set(yAxisColor); + color.toArray(array, 6); + color.toArray(array, 9); + color.set(zAxisColor); + color.toArray(array, 12); + color.toArray(array, 15); + this.geometry.attributes.color.needsUpdate = true; + return this; + } + + dispose() { + this.geometry.dispose(); + this.material.dispose(); + } + + } + + const _floatView = new Float32Array(1); + + const _int32View = new Int32Array(_floatView.buffer); + + class DataUtils { + // Converts float32 to float16 (stored as uint16 value). + static toHalfFloat(val) { + // Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410 + + /* This method is faster than the OpenEXR implementation (very often + * used, eg. in Ogre), with the additional benefit of rounding, inspired + * by James Tursa?s half-precision code. */ + _floatView[0] = val; + const x = _int32View[0]; + let bits = x >> 16 & 0x8000; + /* Get the sign */ + + let m = x >> 12 & 0x07ff; + /* Keep one extra bit for rounding */ + + const e = x >> 23 & 0xff; + /* Using int is faster here */ + + /* If zero, or denormal, or exponent underflows too much for a denormal + * half, return signed zero. */ + + if (e < 103) return bits; + /* If NaN, return NaN. If Inf or exponent overflow, return Inf. */ + + if (e > 142) { + bits |= 0x7c00; + /* If exponent was 0xff and one mantissa bit was set, it means NaN, + * not Inf, so make sure we set one mantissa bit too. */ + + bits |= (e == 255 ? 0 : 1) && x & 0x007fffff; + return bits; + } + /* If exponent underflows but not too much, return a denormal */ + + + if (e < 113) { + m |= 0x0800; + /* Extra rounding may overflow and set mantissa to 0 and exponent + * to 1, which is OK. */ + + bits |= (m >> 114 - e) + (m >> 113 - e & 1); + return bits; + } + + bits |= e - 112 << 10 | m >> 1; + /* Extra rounding. An overflow will set mantissa to 0 and increment + * the exponent, which is OK. */ + + bits += m & 1; + return bits; + } + + } + + const LineStrip = 0; + const LinePieces = 1; + const NoColors = 0; + const FaceColors = 1; + const VertexColors = 2; + function MeshFaceMaterial(materials) { + console.warn('THREE.MeshFaceMaterial has been removed. Use an Array instead.'); + return materials; + } + function MultiMaterial(materials = []) { + console.warn('THREE.MultiMaterial has been removed. Use an Array instead.'); + materials.isMultiMaterial = true; + materials.materials = materials; + + materials.clone = function () { + return materials.slice(); + }; + + return materials; + } + function PointCloud(geometry, material) { + console.warn('THREE.PointCloud has been renamed to THREE.Points.'); + return new Points(geometry, material); + } + function Particle(material) { + console.warn('THREE.Particle has been renamed to THREE.Sprite.'); + return new Sprite(material); + } + function ParticleSystem(geometry, material) { + console.warn('THREE.ParticleSystem has been renamed to THREE.Points.'); + return new Points(geometry, material); + } + function PointCloudMaterial(parameters) { + console.warn('THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.'); + return new PointsMaterial(parameters); + } + function ParticleBasicMaterial(parameters) { + console.warn('THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.'); + return new PointsMaterial(parameters); + } + function ParticleSystemMaterial(parameters) { + console.warn('THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.'); + return new PointsMaterial(parameters); + } + function Vertex(x, y, z) { + console.warn('THREE.Vertex has been removed. Use THREE.Vector3 instead.'); + return new Vector3(x, y, z); + } // + + function DynamicBufferAttribute(array, itemSize) { + console.warn('THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.'); + return new BufferAttribute(array, itemSize).setUsage(DynamicDrawUsage); + } + function Int8Attribute(array, itemSize) { + console.warn('THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.'); + return new Int8BufferAttribute(array, itemSize); + } + function Uint8Attribute(array, itemSize) { + console.warn('THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.'); + return new Uint8BufferAttribute(array, itemSize); + } + function Uint8ClampedAttribute(array, itemSize) { + console.warn('THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.'); + return new Uint8ClampedBufferAttribute(array, itemSize); + } + function Int16Attribute(array, itemSize) { + console.warn('THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.'); + return new Int16BufferAttribute(array, itemSize); + } + function Uint16Attribute(array, itemSize) { + console.warn('THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.'); + return new Uint16BufferAttribute(array, itemSize); + } + function Int32Attribute(array, itemSize) { + console.warn('THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.'); + return new Int32BufferAttribute(array, itemSize); + } + function Uint32Attribute(array, itemSize) { + console.warn('THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.'); + return new Uint32BufferAttribute(array, itemSize); + } + function Float32Attribute(array, itemSize) { + console.warn('THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.'); + return new Float32BufferAttribute(array, itemSize); + } + function Float64Attribute(array, itemSize) { + console.warn('THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.'); + return new Float64BufferAttribute(array, itemSize); + } // + + Curve.create = function (construct, getPoint) { + console.log('THREE.Curve.create() has been deprecated'); + construct.prototype = Object.create(Curve.prototype); + construct.prototype.constructor = construct; + construct.prototype.getPoint = getPoint; + return construct; + }; // + + + Path.prototype.fromPoints = function (points) { + console.warn('THREE.Path: .fromPoints() has been renamed to .setFromPoints().'); + return this.setFromPoints(points); + }; // + + + function AxisHelper(size) { + console.warn('THREE.AxisHelper has been renamed to THREE.AxesHelper.'); + return new AxesHelper(size); + } + function BoundingBoxHelper(object, color) { + console.warn('THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.'); + return new BoxHelper(object, color); + } + function EdgesHelper(object, hex) { + console.warn('THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.'); + return new LineSegments(new EdgesGeometry(object.geometry), new LineBasicMaterial({ + color: hex !== undefined ? hex : 0xffffff + })); + } + + GridHelper.prototype.setColors = function () { + console.error('THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.'); + }; + + SkeletonHelper.prototype.update = function () { + console.error('THREE.SkeletonHelper: update() no longer needs to be called.'); + }; + + function WireframeHelper(object, hex) { + console.warn('THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.'); + return new LineSegments(new WireframeGeometry(object.geometry), new LineBasicMaterial({ + color: hex !== undefined ? hex : 0xffffff + })); + } // + + Loader.prototype.extractUrlBase = function (url) { + console.warn('THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.'); + return LoaderUtils.extractUrlBase(url); + }; + + Loader.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.'); + } + }; + function XHRLoader(manager) { + console.warn('THREE.XHRLoader has been renamed to THREE.FileLoader.'); + return new FileLoader(manager); + } + function BinaryTextureLoader(manager) { + console.warn('THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.'); + return new DataTextureLoader(manager); + } // + + Box2.prototype.center = function (optionalTarget) { + console.warn('THREE.Box2: .center() has been renamed to .getCenter().'); + return this.getCenter(optionalTarget); + }; + + Box2.prototype.empty = function () { + console.warn('THREE.Box2: .empty() has been renamed to .isEmpty().'); + return this.isEmpty(); + }; + + Box2.prototype.isIntersectionBox = function (box) { + console.warn('THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().'); + return this.intersectsBox(box); + }; + + Box2.prototype.size = function (optionalTarget) { + console.warn('THREE.Box2: .size() has been renamed to .getSize().'); + return this.getSize(optionalTarget); + }; // + + + Box3.prototype.center = function (optionalTarget) { + console.warn('THREE.Box3: .center() has been renamed to .getCenter().'); + return this.getCenter(optionalTarget); + }; + + Box3.prototype.empty = function () { + console.warn('THREE.Box3: .empty() has been renamed to .isEmpty().'); + return this.isEmpty(); + }; + + Box3.prototype.isIntersectionBox = function (box) { + console.warn('THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().'); + return this.intersectsBox(box); + }; + + Box3.prototype.isIntersectionSphere = function (sphere) { + console.warn('THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().'); + return this.intersectsSphere(sphere); + }; + + Box3.prototype.size = function (optionalTarget) { + console.warn('THREE.Box3: .size() has been renamed to .getSize().'); + return this.getSize(optionalTarget); + }; // + + + Sphere.prototype.empty = function () { + console.warn('THREE.Sphere: .empty() has been renamed to .isEmpty().'); + return this.isEmpty(); + }; // + + + Frustum.prototype.setFromMatrix = function (m) { + console.warn('THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().'); + return this.setFromProjectionMatrix(m); + }; // + + + Line3.prototype.center = function (optionalTarget) { + console.warn('THREE.Line3: .center() has been renamed to .getCenter().'); + return this.getCenter(optionalTarget); + }; // + + + Matrix3.prototype.flattenToArrayOffset = function (array, offset) { + console.warn('THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.'); + return this.toArray(array, offset); + }; + + Matrix3.prototype.multiplyVector3 = function (vector) { + console.warn('THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.'); + return vector.applyMatrix3(this); + }; + + Matrix3.prototype.multiplyVector3Array = function () { + console.error('THREE.Matrix3: .multiplyVector3Array() has been removed.'); + }; + + Matrix3.prototype.applyToBufferAttribute = function (attribute) { + console.warn('THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.'); + return attribute.applyMatrix3(this); + }; + + Matrix3.prototype.applyToVector3Array = function () { + console.error('THREE.Matrix3: .applyToVector3Array() has been removed.'); + }; + + Matrix3.prototype.getInverse = function (matrix) { + console.warn('THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.'); + return this.copy(matrix).invert(); + }; // + + + Matrix4.prototype.extractPosition = function (m) { + console.warn('THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().'); + return this.copyPosition(m); + }; + + Matrix4.prototype.flattenToArrayOffset = function (array, offset) { + console.warn('THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.'); + return this.toArray(array, offset); + }; + + Matrix4.prototype.getPosition = function () { + console.warn('THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.'); + return new Vector3().setFromMatrixColumn(this, 3); + }; + + Matrix4.prototype.setRotationFromQuaternion = function (q) { + console.warn('THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().'); + return this.makeRotationFromQuaternion(q); + }; + + Matrix4.prototype.multiplyToArray = function () { + console.warn('THREE.Matrix4: .multiplyToArray() has been removed.'); + }; + + Matrix4.prototype.multiplyVector3 = function (vector) { + console.warn('THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.'); + return vector.applyMatrix4(this); + }; + + Matrix4.prototype.multiplyVector4 = function (vector) { + console.warn('THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.'); + return vector.applyMatrix4(this); + }; + + Matrix4.prototype.multiplyVector3Array = function () { + console.error('THREE.Matrix4: .multiplyVector3Array() has been removed.'); + }; + + Matrix4.prototype.rotateAxis = function (v) { + console.warn('THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.'); + v.transformDirection(this); + }; + + Matrix4.prototype.crossVector = function (vector) { + console.warn('THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.'); + return vector.applyMatrix4(this); + }; + + Matrix4.prototype.translate = function () { + console.error('THREE.Matrix4: .translate() has been removed.'); + }; + + Matrix4.prototype.rotateX = function () { + console.error('THREE.Matrix4: .rotateX() has been removed.'); + }; + + Matrix4.prototype.rotateY = function () { + console.error('THREE.Matrix4: .rotateY() has been removed.'); + }; + + Matrix4.prototype.rotateZ = function () { + console.error('THREE.Matrix4: .rotateZ() has been removed.'); + }; + + Matrix4.prototype.rotateByAxis = function () { + console.error('THREE.Matrix4: .rotateByAxis() has been removed.'); + }; + + Matrix4.prototype.applyToBufferAttribute = function (attribute) { + console.warn('THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.'); + return attribute.applyMatrix4(this); + }; + + Matrix4.prototype.applyToVector3Array = function () { + console.error('THREE.Matrix4: .applyToVector3Array() has been removed.'); + }; + + Matrix4.prototype.makeFrustum = function (left, right, bottom, top, near, far) { + console.warn('THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.'); + return this.makePerspective(left, right, top, bottom, near, far); + }; + + Matrix4.prototype.getInverse = function (matrix) { + console.warn('THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.'); + return this.copy(matrix).invert(); + }; // + + + Plane.prototype.isIntersectionLine = function (line) { + console.warn('THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().'); + return this.intersectsLine(line); + }; // + + + Quaternion.prototype.multiplyVector3 = function (vector) { + console.warn('THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.'); + return vector.applyQuaternion(this); + }; + + Quaternion.prototype.inverse = function () { + console.warn('THREE.Quaternion: .inverse() has been renamed to invert().'); + return this.invert(); + }; // + + + Ray.prototype.isIntersectionBox = function (box) { + console.warn('THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().'); + return this.intersectsBox(box); + }; + + Ray.prototype.isIntersectionPlane = function (plane) { + console.warn('THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().'); + return this.intersectsPlane(plane); + }; + + Ray.prototype.isIntersectionSphere = function (sphere) { + console.warn('THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().'); + return this.intersectsSphere(sphere); + }; // + + + Triangle.prototype.area = function () { + console.warn('THREE.Triangle: .area() has been renamed to .getArea().'); + return this.getArea(); + }; + + Triangle.prototype.barycoordFromPoint = function (point, target) { + console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().'); + return this.getBarycoord(point, target); + }; + + Triangle.prototype.midpoint = function (target) { + console.warn('THREE.Triangle: .midpoint() has been renamed to .getMidpoint().'); + return this.getMidpoint(target); + }; + + Triangle.prototypenormal = function (target) { + console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().'); + return this.getNormal(target); + }; + + Triangle.prototype.plane = function (target) { + console.warn('THREE.Triangle: .plane() has been renamed to .getPlane().'); + return this.getPlane(target); + }; + + Triangle.barycoordFromPoint = function (point, a, b, c, target) { + console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().'); + return Triangle.getBarycoord(point, a, b, c, target); + }; + + Triangle.normal = function (a, b, c, target) { + console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().'); + return Triangle.getNormal(a, b, c, target); + }; // + + + Shape.prototype.extractAllPoints = function (divisions) { + console.warn('THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.'); + return this.extractPoints(divisions); + }; + + Shape.prototype.extrude = function (options) { + console.warn('THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.'); + return new ExtrudeGeometry(this, options); + }; + + Shape.prototype.makeGeometry = function (options) { + console.warn('THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.'); + return new ShapeGeometry(this, options); + }; // + + + Vector2.prototype.fromAttribute = function (attribute, index, offset) { + console.warn('THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().'); + return this.fromBufferAttribute(attribute, index, offset); + }; + + Vector2.prototype.distanceToManhattan = function (v) { + console.warn('THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().'); + return this.manhattanDistanceTo(v); + }; + + Vector2.prototype.lengthManhattan = function () { + console.warn('THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().'); + return this.manhattanLength(); + }; // + + + Vector3.prototype.setEulerFromRotationMatrix = function () { + console.error('THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.'); + }; + + Vector3.prototype.setEulerFromQuaternion = function () { + console.error('THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.'); + }; + + Vector3.prototype.getPositionFromMatrix = function (m) { + console.warn('THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().'); + return this.setFromMatrixPosition(m); + }; + + Vector3.prototype.getScaleFromMatrix = function (m) { + console.warn('THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().'); + return this.setFromMatrixScale(m); + }; + + Vector3.prototype.getColumnFromMatrix = function (index, matrix) { + console.warn('THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().'); + return this.setFromMatrixColumn(matrix, index); + }; + + Vector3.prototype.applyProjection = function (m) { + console.warn('THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.'); + return this.applyMatrix4(m); + }; + + Vector3.prototype.fromAttribute = function (attribute, index, offset) { + console.warn('THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().'); + return this.fromBufferAttribute(attribute, index, offset); + }; + + Vector3.prototype.distanceToManhattan = function (v) { + console.warn('THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().'); + return this.manhattanDistanceTo(v); + }; + + Vector3.prototype.lengthManhattan = function () { + console.warn('THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().'); + return this.manhattanLength(); + }; // + + + Vector4.prototype.fromAttribute = function (attribute, index, offset) { + console.warn('THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().'); + return this.fromBufferAttribute(attribute, index, offset); + }; + + Vector4.prototype.lengthManhattan = function () { + console.warn('THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().'); + return this.manhattanLength(); + }; // + + + Object3D.prototype.getChildByName = function (name) { + console.warn('THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().'); + return this.getObjectByName(name); + }; + + Object3D.prototype.renderDepth = function () { + console.warn('THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.'); + }; + + Object3D.prototype.translate = function (distance, axis) { + console.warn('THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.'); + return this.translateOnAxis(axis, distance); + }; + + Object3D.prototype.getWorldRotation = function () { + console.error('THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.'); + }; + + Object3D.prototype.applyMatrix = function (matrix) { + console.warn('THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().'); + return this.applyMatrix4(matrix); + }; + + Object.defineProperties(Object3D.prototype, { + eulerOrder: { + get: function () { + console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.'); + return this.rotation.order; + }, + set: function (value) { + console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.'); + this.rotation.order = value; + } + }, + 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.'); + } + } + }); + + Mesh.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(Mesh.prototype, { + drawMode: { + get: function () { + console.error('THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.'); + return TrianglesDrawMode; + }, + 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.'); + } + } + }); + + SkinnedMesh.prototype.initBones = function () { + console.error('THREE.SkinnedMesh: initBones() has been removed.'); + }; // + + + PerspectiveCamera.prototype.setLens = function (focalLength, filmGauge) { + console.warn('THREE.PerspectiveCamera.setLens is deprecated. ' + 'Use .setFocalLength and .filmGauge for a photographic setup.'); + if (filmGauge !== undefined) this.filmGauge = filmGauge; + this.setFocalLength(focalLength); + }; // + + + Object.defineProperties(Light.prototype, { + onlyShadow: { + set: function () { + console.warn('THREE.Light: .onlyShadow has been removed.'); + } + }, + shadowCameraFov: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraFov is now .shadow.camera.fov.'); + this.shadow.camera.fov = value; + } + }, + shadowCameraLeft: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraLeft is now .shadow.camera.left.'); + this.shadow.camera.left = value; + } + }, + shadowCameraRight: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraRight is now .shadow.camera.right.'); + this.shadow.camera.right = value; + } + }, + shadowCameraTop: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraTop is now .shadow.camera.top.'); + this.shadow.camera.top = value; + } + }, + shadowCameraBottom: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.'); + this.shadow.camera.bottom = value; + } + }, + shadowCameraNear: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraNear is now .shadow.camera.near.'); + this.shadow.camera.near = value; + } + }, + shadowCameraFar: { + set: function (value) { + console.warn('THREE.Light: .shadowCameraFar is now .shadow.camera.far.'); + this.shadow.camera.far = value; + } + }, + shadowCameraVisible: { + set: function () { + console.warn('THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.'); + } + }, + shadowBias: { + set: function (value) { + console.warn('THREE.Light: .shadowBias is now .shadow.bias.'); + this.shadow.bias = value; + } + }, + shadowDarkness: { + set: function () { + console.warn('THREE.Light: .shadowDarkness has been removed.'); + } + }, + shadowMapWidth: { + set: function (value) { + console.warn('THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.'); + this.shadow.mapSize.width = value; + } + }, + shadowMapHeight: { + set: function (value) { + console.warn('THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.'); + this.shadow.mapSize.height = value; + } + } + }); // + + Object.defineProperties(BufferAttribute.prototype, { + length: { + get: function () { + console.warn('THREE.BufferAttribute: .length has been deprecated. Use .count instead.'); + return this.array.length; + } + }, + dynamic: { + get: function () { + console.warn('THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.'); + return this.usage === DynamicDrawUsage; + }, + set: function () { + console.warn('THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.'); + this.setUsage(DynamicDrawUsage); + } + } + }); + + BufferAttribute.prototype.setDynamic = function (value) { + console.warn('THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.'); + this.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage); + return this; + }; + + BufferAttribute.prototype.copyIndicesArray = function () { + console.error('THREE.BufferAttribute: .copyIndicesArray() has been removed.'); + }, BufferAttribute.prototype.setArray = function () { + console.error('THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers'); + }; // + + BufferGeometry.prototype.addIndex = function (index) { + console.warn('THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().'); + this.setIndex(index); + }; + + BufferGeometry.prototype.addAttribute = function (name, attribute) { + console.warn('THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().'); + + if (!(attribute && attribute.isBufferAttribute) && !(attribute && attribute.isInterleavedBufferAttribute)) { + console.warn('THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).'); + return this.setAttribute(name, new BufferAttribute(arguments[1], arguments[2])); + } + + if (name === 'index') { + console.warn('THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.'); + this.setIndex(attribute); + return this; + } + + return this.setAttribute(name, attribute); + }; + + BufferGeometry.prototype.addDrawCall = function (start, count, indexOffset) { + if (indexOffset !== undefined) { + console.warn('THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.'); + } + + console.warn('THREE.BufferGeometry: .addDrawCall() is now .addGroup().'); + this.addGroup(start, count); + }; + + BufferGeometry.prototype.clearDrawCalls = function () { + console.warn('THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().'); + this.clearGroups(); + }; + + BufferGeometry.prototype.computeOffsets = function () { + console.warn('THREE.BufferGeometry: .computeOffsets() has been removed.'); + }; + + BufferGeometry.prototype.removeAttribute = function (name) { + console.warn('THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().'); + return this.deleteAttribute(name); + }; + + BufferGeometry.prototype.applyMatrix = function (matrix) { + console.warn('THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().'); + return this.applyMatrix4(matrix); + }; + + Object.defineProperties(BufferGeometry.prototype, { + drawcalls: { + get: function () { + console.error('THREE.BufferGeometry: .drawcalls has been renamed to .groups.'); + return this.groups; + } + }, + offsets: { + get: function () { + console.warn('THREE.BufferGeometry: .offsets has been renamed to .groups.'); + return this.groups; + } + } + }); + + InterleavedBuffer.prototype.setDynamic = function (value) { + console.warn('THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.'); + this.setUsage(value === true ? DynamicDrawUsage : StaticDrawUsage); + return this; + }; + + InterleavedBuffer.prototype.setArray = function () { + console.error('THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers'); + }; // + + + ExtrudeGeometry.prototype.getArrays = function () { + console.error('THREE.ExtrudeGeometry: .getArrays() has been removed.'); + }; + + ExtrudeGeometry.prototype.addShapeList = function () { + console.error('THREE.ExtrudeGeometry: .addShapeList() has been removed.'); + }; + + ExtrudeGeometry.prototype.addShape = function () { + console.error('THREE.ExtrudeGeometry: .addShape() has been removed.'); + }; // + + + Scene.prototype.dispose = function () { + console.error('THREE.Scene: .dispose() has been removed.'); + }; // + + + Uniform.prototype.onUpdate = function () { + console.warn('THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.'); + return this; + }; // + + + Object.defineProperties(Material.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 () { + console.warn('THREE.Material: .wrapRGB has been removed.'); + return new Color(); + } + }, + shading: { + get: function () { + console.error('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.'); + }, + set: function (value) { + console.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.'); + this.flatShading = value === FlatShading; + } + }, + stencilMask: { + get: function () { + console.warn('THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.'); + return this.stencilFuncMask; + }, + set: function (value) { + console.warn('THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.'); + this.stencilFuncMask = value; + } + }, + vertexTangents: { + get: function () { + console.warn('THREE.' + this.type + ': .vertexTangents has been removed.'); + }, + set: function () { + console.warn('THREE.' + this.type + ': .vertexTangents has been removed.'); + } + } + }); + Object.defineProperties(ShaderMaterial.prototype, { + derivatives: { + get: function () { + console.warn('THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.'); + return this.extensions.derivatives; + }, + set: function (value) { + console.warn('THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.'); + this.extensions.derivatives = value; + } + } + }); // + + WebGLRenderer.prototype.clearTarget = function (renderTarget, color, depth, stencil) { + console.warn('THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.'); + this.setRenderTarget(renderTarget); + this.clear(color, depth, stencil); + }; + + WebGLRenderer.prototype.animate = function (callback) { + console.warn('THREE.WebGLRenderer: .animate() is now .setAnimationLoop().'); + this.setAnimationLoop(callback); + }; + + WebGLRenderer.prototype.getCurrentRenderTarget = function () { + console.warn('THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().'); + return this.getRenderTarget(); + }; + + WebGLRenderer.prototype.getMaxAnisotropy = function () { + console.warn('THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().'); + return this.capabilities.getMaxAnisotropy(); + }; + + WebGLRenderer.prototype.getPrecision = function () { + console.warn('THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.'); + return this.capabilities.precision; + }; + + WebGLRenderer.prototype.resetGLState = function () { + console.warn('THREE.WebGLRenderer: .resetGLState() is now .state.reset().'); + return this.state.reset(); + }; + + WebGLRenderer.prototype.supportsFloatTextures = function () { + console.warn('THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).'); + return this.extensions.get('OES_texture_float'); + }; + + WebGLRenderer.prototype.supportsHalfFloatTextures = function () { + console.warn('THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).'); + return this.extensions.get('OES_texture_half_float'); + }; + + WebGLRenderer.prototype.supportsStandardDerivatives = function () { + console.warn('THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).'); + return this.extensions.get('OES_standard_derivatives'); + }; + + WebGLRenderer.prototype.supportsCompressedTextureS3TC = function () { + console.warn('THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).'); + return this.extensions.get('WEBGL_compressed_texture_s3tc'); + }; + + WebGLRenderer.prototype.supportsCompressedTexturePVRTC = function () { + console.warn('THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).'); + return this.extensions.get('WEBGL_compressed_texture_pvrtc'); + }; + + WebGLRenderer.prototype.supportsBlendMinMax = function () { + console.warn('THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).'); + return this.extensions.get('EXT_blend_minmax'); + }; + + WebGLRenderer.prototype.supportsVertexTextures = function () { + console.warn('THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.'); + return this.capabilities.vertexTextures; + }; + + WebGLRenderer.prototype.supportsInstancedArrays = function () { + console.warn('THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).'); + return this.extensions.get('ANGLE_instanced_arrays'); + }; + + WebGLRenderer.prototype.enableScissorTest = function (boolean) { + console.warn('THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().'); + this.setScissorTest(boolean); + }; + + WebGLRenderer.prototype.initMaterial = function () { + console.warn('THREE.WebGLRenderer: .initMaterial() has been removed.'); + }; + + WebGLRenderer.prototype.addPrePlugin = function () { + console.warn('THREE.WebGLRenderer: .addPrePlugin() has been removed.'); + }; + + WebGLRenderer.prototype.addPostPlugin = function () { + console.warn('THREE.WebGLRenderer: .addPostPlugin() has been removed.'); + }; + + WebGLRenderer.prototype.updateShadowMap = function () { + console.warn('THREE.WebGLRenderer: .updateShadowMap() has been removed.'); + }; + + WebGLRenderer.prototype.setFaceCulling = function () { + console.warn('THREE.WebGLRenderer: .setFaceCulling() has been removed.'); + }; + + WebGLRenderer.prototype.allocTextureUnit = function () { + console.warn('THREE.WebGLRenderer: .allocTextureUnit() has been removed.'); + }; + + WebGLRenderer.prototype.setTexture = function () { + console.warn('THREE.WebGLRenderer: .setTexture() has been removed.'); + }; + + WebGLRenderer.prototype.setTexture2D = function () { + console.warn('THREE.WebGLRenderer: .setTexture2D() has been removed.'); + }; + + WebGLRenderer.prototype.setTextureCube = function () { + console.warn('THREE.WebGLRenderer: .setTextureCube() has been removed.'); + }; + + WebGLRenderer.prototype.getActiveMipMapLevel = function () { + console.warn('THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().'); + return this.getActiveMipmapLevel(); + }; + + Object.defineProperties(WebGLRenderer.prototype, { + shadowMapEnabled: { + get: function () { + return this.shadowMap.enabled; + }, + set: function (value) { + console.warn('THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.'); + this.shadowMap.enabled = value; + } + }, + shadowMapType: { + get: function () { + return this.shadowMap.type; + }, + set: function (value) { + console.warn('THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.'); + this.shadowMap.type = value; + } + }, + shadowMapCullFace: { + get: function () { + console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.'); + return undefined; + }, + set: function () { + console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.'); + } + }, + context: { + get: function () { + console.warn('THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.'); + return this.getContext(); + } + }, + vr: { + get: function () { + console.warn('THREE.WebGLRenderer: .vr has been renamed to .xr'); + return this.xr; + } + }, + gammaInput: { + get: function () { + console.warn('THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.'); + return false; + }, + set: function () { + console.warn('THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.'); + } + }, + gammaOutput: { + get: function () { + console.warn('THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.'); + return false; + }, + set: function (value) { + console.warn('THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.'); + this.outputEncoding = value === true ? sRGBEncoding : LinearEncoding; + } + }, + toneMappingWhitePoint: { + get: function () { + console.warn('THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.'); + return 1.0; + }, + set: function () { + console.warn('THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.'); + } + } + }); + Object.defineProperties(WebGLShadowMap.prototype, { + cullFace: { + get: function () { + console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.'); + return undefined; + }, + 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.'); + return undefined; + }, + 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.'); + return undefined; + }, + set: function () { + console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.'); + } + } + }); + function WebGLRenderTargetCube(width, height, options) { + console.warn('THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).'); + return new WebGLCubeRenderTarget(width, options); + } // + + Object.defineProperties(WebGLRenderTarget.prototype, { + wrapS: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.'); + return this.texture.wrapS; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.'); + this.texture.wrapS = value; + } + }, + wrapT: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.'); + return this.texture.wrapT; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.'); + this.texture.wrapT = value; + } + }, + magFilter: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.'); + return this.texture.magFilter; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.'); + this.texture.magFilter = value; + } + }, + minFilter: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.'); + return this.texture.minFilter; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.'); + this.texture.minFilter = value; + } + }, + anisotropy: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.'); + return this.texture.anisotropy; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.'); + this.texture.anisotropy = value; + } + }, + offset: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.'); + return this.texture.offset; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.'); + this.texture.offset = value; + } + }, + repeat: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.'); + return this.texture.repeat; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.'); + this.texture.repeat = value; + } + }, + format: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.'); + return this.texture.format; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.'); + this.texture.format = value; + } + }, + type: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.'); + return this.texture.type; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.'); + this.texture.type = value; + } + }, + generateMipmaps: { + get: function () { + console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.'); + return this.texture.generateMipmaps; + }, + set: function (value) { + console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.'); + this.texture.generateMipmaps = value; + } + } + }); // + + Audio.prototype.load = function (file) { + console.warn('THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.'); + const scope = this; + const audioLoader = new AudioLoader(); + audioLoader.load(file, function (buffer) { + scope.setBuffer(buffer); + }); + return this; + }; + + AudioAnalyser.prototype.getData = function () { + console.warn('THREE.AudioAnalyser: .getData() is now .getFrequencyData().'); + return this.getFrequencyData(); + }; // + + + CubeCamera.prototype.updateCubeMap = function (renderer, scene) { + console.warn('THREE.CubeCamera: .updateCubeMap() is now .update().'); + return this.update(renderer, scene); + }; + + CubeCamera.prototype.clear = function (renderer, color, depth, stencil) { + console.warn('THREE.CubeCamera: .clear() is now .renderTarget.clear().'); + return this.renderTarget.clear(renderer, color, depth, stencil); + }; + + ImageUtils.crossOrigin = undefined; + + ImageUtils.loadTexture = function (url, mapping, onLoad, onError) { + console.warn('THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.'); + const loader = new TextureLoader(); + loader.setCrossOrigin(this.crossOrigin); + const texture = loader.load(url, onLoad, undefined, onError); + if (mapping) texture.mapping = mapping; + return texture; + }; + + ImageUtils.loadTextureCube = function (urls, mapping, onLoad, onError) { + console.warn('THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.'); + const loader = new CubeTextureLoader(); + loader.setCrossOrigin(this.crossOrigin); + const texture = loader.load(urls, onLoad, undefined, onError); + if (mapping) texture.mapping = mapping; + return texture; + }; + + ImageUtils.loadCompressedTexture = function () { + console.error('THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.'); + }; + + ImageUtils.loadCompressedTextureCube = function () { + console.error('THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.'); + }; // + + + function CanvasRenderer() { + console.error('THREE.CanvasRenderer has been removed'); + } // + + function JSONLoader() { + console.error('THREE.JSONLoader has been removed.'); + } // + + const SceneUtils = { + 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'); + } + }; // + + function LensFlare() { + console.error('THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js'); + } + + if (typeof __THREE_DEVTOOLS__ !== 'undefined') { + /* eslint-disable no-undef */ + __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent('register', { + detail: { + revision: REVISION + } + })); + /* eslint-enable no-undef */ + + } + + if (typeof window !== 'undefined') { + if (window.__THREE__) { + console.warn('WARNING: Multiple instances of Three.js being imported.'); + } else { + window.__THREE__ = REVISION; + } + } + + exports.ACESFilmicToneMapping = ACESFilmicToneMapping; + exports.AddEquation = AddEquation; + exports.AddOperation = AddOperation; + exports.AdditiveAnimationBlendMode = AdditiveAnimationBlendMode; + exports.AdditiveBlending = AdditiveBlending; + exports.AlphaFormat = AlphaFormat; + exports.AlwaysDepth = AlwaysDepth; + exports.AlwaysStencilFunc = AlwaysStencilFunc; + exports.AmbientLight = AmbientLight; + exports.AmbientLightProbe = AmbientLightProbe; + exports.AnimationClip = AnimationClip; + exports.AnimationLoader = AnimationLoader; + exports.AnimationMixer = AnimationMixer; + exports.AnimationObjectGroup = AnimationObjectGroup; + exports.AnimationUtils = AnimationUtils; + exports.ArcCurve = ArcCurve; + exports.ArrayCamera = ArrayCamera; + exports.ArrowHelper = ArrowHelper; + exports.Audio = Audio; + exports.AudioAnalyser = AudioAnalyser; + exports.AudioContext = AudioContext; + exports.AudioListener = AudioListener; + exports.AudioLoader = AudioLoader; + exports.AxesHelper = AxesHelper; + exports.AxisHelper = AxisHelper; + exports.BackSide = BackSide; + exports.BasicDepthPacking = BasicDepthPacking; + exports.BasicShadowMap = BasicShadowMap; + exports.BinaryTextureLoader = BinaryTextureLoader; + exports.Bone = Bone; + exports.BooleanKeyframeTrack = BooleanKeyframeTrack; + exports.BoundingBoxHelper = BoundingBoxHelper; + exports.Box2 = Box2; + exports.Box3 = Box3; + exports.Box3Helper = Box3Helper; + exports.BoxBufferGeometry = BoxGeometry; + exports.BoxGeometry = BoxGeometry; + exports.BoxHelper = BoxHelper; + exports.BufferAttribute = BufferAttribute; + exports.BufferGeometry = BufferGeometry; + exports.BufferGeometryLoader = BufferGeometryLoader; + exports.ByteType = ByteType; + exports.Cache = Cache; + exports.Camera = Camera; + exports.CameraHelper = CameraHelper; + exports.CanvasRenderer = CanvasRenderer; + exports.CanvasTexture = CanvasTexture; + exports.CatmullRomCurve3 = CatmullRomCurve3; + exports.CineonToneMapping = CineonToneMapping; + exports.CircleBufferGeometry = CircleGeometry; + exports.CircleGeometry = CircleGeometry; + exports.ClampToEdgeWrapping = ClampToEdgeWrapping; + exports.Clock = Clock; + exports.Color = Color; + exports.ColorKeyframeTrack = ColorKeyframeTrack; + exports.CompressedTexture = CompressedTexture; + exports.CompressedTextureLoader = CompressedTextureLoader; + exports.ConeBufferGeometry = ConeGeometry; + exports.ConeGeometry = ConeGeometry; + exports.CubeCamera = CubeCamera; + exports.CubeReflectionMapping = CubeReflectionMapping; + exports.CubeRefractionMapping = CubeRefractionMapping; + exports.CubeTexture = CubeTexture; + exports.CubeTextureLoader = CubeTextureLoader; + exports.CubeUVReflectionMapping = CubeUVReflectionMapping; + exports.CubeUVRefractionMapping = CubeUVRefractionMapping; + exports.CubicBezierCurve = CubicBezierCurve; + exports.CubicBezierCurve3 = CubicBezierCurve3; + exports.CubicInterpolant = CubicInterpolant; + exports.CullFaceBack = CullFaceBack; + exports.CullFaceFront = CullFaceFront; + exports.CullFaceFrontBack = CullFaceFrontBack; + exports.CullFaceNone = CullFaceNone; + exports.Curve = Curve; + exports.CurvePath = CurvePath; + exports.CustomBlending = CustomBlending; + exports.CustomToneMapping = CustomToneMapping; + exports.CylinderBufferGeometry = CylinderGeometry; + exports.CylinderGeometry = CylinderGeometry; + exports.Cylindrical = Cylindrical; + exports.DataTexture = DataTexture; + exports.DataTexture2DArray = DataTexture2DArray; + exports.DataTexture3D = DataTexture3D; + exports.DataTextureLoader = DataTextureLoader; + exports.DataUtils = DataUtils; + exports.DecrementStencilOp = DecrementStencilOp; + exports.DecrementWrapStencilOp = DecrementWrapStencilOp; + exports.DefaultLoadingManager = DefaultLoadingManager; + exports.DepthFormat = DepthFormat; + exports.DepthStencilFormat = DepthStencilFormat; + exports.DepthTexture = DepthTexture; + exports.DirectionalLight = DirectionalLight; + exports.DirectionalLightHelper = DirectionalLightHelper; + exports.DiscreteInterpolant = DiscreteInterpolant; + exports.DodecahedronBufferGeometry = DodecahedronGeometry; + exports.DodecahedronGeometry = DodecahedronGeometry; + exports.DoubleSide = DoubleSide; + exports.DstAlphaFactor = DstAlphaFactor; + exports.DstColorFactor = DstColorFactor; + exports.DynamicBufferAttribute = DynamicBufferAttribute; + exports.DynamicCopyUsage = DynamicCopyUsage; + exports.DynamicDrawUsage = DynamicDrawUsage; + exports.DynamicReadUsage = DynamicReadUsage; + exports.EdgesGeometry = EdgesGeometry; + exports.EdgesHelper = EdgesHelper; + exports.EllipseCurve = EllipseCurve; + exports.EqualDepth = EqualDepth; + exports.EqualStencilFunc = EqualStencilFunc; + exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; + exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; + exports.Euler = Euler; + exports.EventDispatcher = EventDispatcher; + exports.ExtrudeBufferGeometry = ExtrudeGeometry; + exports.ExtrudeGeometry = ExtrudeGeometry; + exports.FaceColors = FaceColors; + exports.FileLoader = FileLoader; + exports.FlatShading = FlatShading; + exports.Float16BufferAttribute = Float16BufferAttribute; + exports.Float32Attribute = Float32Attribute; + exports.Float32BufferAttribute = Float32BufferAttribute; + exports.Float64Attribute = Float64Attribute; + exports.Float64BufferAttribute = Float64BufferAttribute; + exports.FloatType = FloatType; + exports.Fog = Fog; + exports.FogExp2 = FogExp2; + exports.Font = Font; + exports.FontLoader = FontLoader; + exports.FrontSide = FrontSide; + exports.Frustum = Frustum; + exports.GLBufferAttribute = GLBufferAttribute; + exports.GLSL1 = GLSL1; + exports.GLSL3 = GLSL3; + exports.GammaEncoding = GammaEncoding; + exports.GreaterDepth = GreaterDepth; + exports.GreaterEqualDepth = GreaterEqualDepth; + exports.GreaterEqualStencilFunc = GreaterEqualStencilFunc; + exports.GreaterStencilFunc = GreaterStencilFunc; + exports.GridHelper = GridHelper; + exports.Group = Group; + exports.HalfFloatType = HalfFloatType; + exports.HemisphereLight = HemisphereLight; + exports.HemisphereLightHelper = HemisphereLightHelper; + exports.HemisphereLightProbe = HemisphereLightProbe; + exports.IcosahedronBufferGeometry = IcosahedronGeometry; + exports.IcosahedronGeometry = IcosahedronGeometry; + exports.ImageBitmapLoader = ImageBitmapLoader; + exports.ImageLoader = ImageLoader; + exports.ImageUtils = ImageUtils; + exports.ImmediateRenderObject = ImmediateRenderObject; + exports.IncrementStencilOp = IncrementStencilOp; + exports.IncrementWrapStencilOp = IncrementWrapStencilOp; + exports.InstancedBufferAttribute = InstancedBufferAttribute; + exports.InstancedBufferGeometry = InstancedBufferGeometry; + exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; + exports.InstancedMesh = InstancedMesh; + exports.Int16Attribute = Int16Attribute; + exports.Int16BufferAttribute = Int16BufferAttribute; + exports.Int32Attribute = Int32Attribute; + exports.Int32BufferAttribute = Int32BufferAttribute; + exports.Int8Attribute = Int8Attribute; + exports.Int8BufferAttribute = Int8BufferAttribute; + exports.IntType = IntType; + exports.InterleavedBuffer = InterleavedBuffer; + exports.InterleavedBufferAttribute = InterleavedBufferAttribute; + exports.Interpolant = Interpolant; + exports.InterpolateDiscrete = InterpolateDiscrete; + exports.InterpolateLinear = InterpolateLinear; + exports.InterpolateSmooth = InterpolateSmooth; + exports.InvertStencilOp = InvertStencilOp; + exports.JSONLoader = JSONLoader; + exports.KeepStencilOp = KeepStencilOp; + exports.KeyframeTrack = KeyframeTrack; + exports.LOD = LOD; + exports.LatheBufferGeometry = LatheGeometry; + exports.LatheGeometry = LatheGeometry; + exports.Layers = Layers; + exports.LensFlare = LensFlare; + exports.LessDepth = LessDepth; + exports.LessEqualDepth = LessEqualDepth; + exports.LessEqualStencilFunc = LessEqualStencilFunc; + exports.LessStencilFunc = LessStencilFunc; + exports.Light = Light; + exports.LightProbe = LightProbe; + exports.Line = Line; + exports.Line3 = Line3; + exports.LineBasicMaterial = LineBasicMaterial; + exports.LineCurve = LineCurve; + exports.LineCurve3 = LineCurve3; + exports.LineDashedMaterial = LineDashedMaterial; + exports.LineLoop = LineLoop; + exports.LinePieces = LinePieces; + exports.LineSegments = LineSegments; + exports.LineStrip = LineStrip; + exports.LinearEncoding = LinearEncoding; + exports.LinearFilter = LinearFilter; + exports.LinearInterpolant = LinearInterpolant; + exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; + exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; + exports.LinearMipmapLinearFilter = LinearMipmapLinearFilter; + exports.LinearMipmapNearestFilter = LinearMipmapNearestFilter; + exports.LinearToneMapping = LinearToneMapping; + exports.Loader = Loader; + exports.LoaderUtils = LoaderUtils; + exports.LoadingManager = LoadingManager; + exports.LogLuvEncoding = LogLuvEncoding; + exports.LoopOnce = LoopOnce; + exports.LoopPingPong = LoopPingPong; + exports.LoopRepeat = LoopRepeat; + exports.LuminanceAlphaFormat = LuminanceAlphaFormat; + exports.LuminanceFormat = LuminanceFormat; + exports.MOUSE = MOUSE; + exports.Material = Material; + exports.MaterialLoader = MaterialLoader; + exports.Math = MathUtils; + exports.MathUtils = MathUtils; + exports.Matrix3 = Matrix3; + exports.Matrix4 = Matrix4; + exports.MaxEquation = MaxEquation; + exports.Mesh = Mesh; + exports.MeshBasicMaterial = MeshBasicMaterial; + exports.MeshDepthMaterial = MeshDepthMaterial; + exports.MeshDistanceMaterial = MeshDistanceMaterial; + exports.MeshFaceMaterial = MeshFaceMaterial; + exports.MeshLambertMaterial = MeshLambertMaterial; + exports.MeshMatcapMaterial = MeshMatcapMaterial; + exports.MeshNormalMaterial = MeshNormalMaterial; + exports.MeshPhongMaterial = MeshPhongMaterial; + exports.MeshPhysicalMaterial = MeshPhysicalMaterial; + exports.MeshStandardMaterial = MeshStandardMaterial; + exports.MeshToonMaterial = MeshToonMaterial; + exports.MinEquation = MinEquation; + exports.MirroredRepeatWrapping = MirroredRepeatWrapping; + exports.MixOperation = MixOperation; + exports.MultiMaterial = MultiMaterial; + exports.MultiplyBlending = MultiplyBlending; + exports.MultiplyOperation = MultiplyOperation; + exports.NearestFilter = NearestFilter; + exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; + exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; + exports.NearestMipmapLinearFilter = NearestMipmapLinearFilter; + exports.NearestMipmapNearestFilter = NearestMipmapNearestFilter; + exports.NeverDepth = NeverDepth; + exports.NeverStencilFunc = NeverStencilFunc; + exports.NoBlending = NoBlending; + exports.NoColors = NoColors; + exports.NoToneMapping = NoToneMapping; + exports.NormalAnimationBlendMode = NormalAnimationBlendMode; + exports.NormalBlending = NormalBlending; + exports.NotEqualDepth = NotEqualDepth; + exports.NotEqualStencilFunc = NotEqualStencilFunc; + exports.NumberKeyframeTrack = NumberKeyframeTrack; + exports.Object3D = Object3D; + exports.ObjectLoader = ObjectLoader; + exports.ObjectSpaceNormalMap = ObjectSpaceNormalMap; + exports.OctahedronBufferGeometry = OctahedronGeometry; + exports.OctahedronGeometry = OctahedronGeometry; + exports.OneFactor = OneFactor; + exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; + exports.OneMinusDstColorFactor = OneMinusDstColorFactor; + exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; + exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; + exports.OrthographicCamera = OrthographicCamera; + exports.PCFShadowMap = PCFShadowMap; + exports.PCFSoftShadowMap = PCFSoftShadowMap; + exports.PMREMGenerator = PMREMGenerator; + exports.ParametricBufferGeometry = ParametricGeometry; + exports.ParametricGeometry = ParametricGeometry; + exports.Particle = Particle; + exports.ParticleBasicMaterial = ParticleBasicMaterial; + exports.ParticleSystem = ParticleSystem; + exports.ParticleSystemMaterial = ParticleSystemMaterial; + exports.Path = Path; + exports.PerspectiveCamera = PerspectiveCamera; + exports.Plane = Plane; + exports.PlaneBufferGeometry = PlaneGeometry; + exports.PlaneGeometry = PlaneGeometry; + exports.PlaneHelper = PlaneHelper; + exports.PointCloud = PointCloud; + exports.PointCloudMaterial = PointCloudMaterial; + exports.PointLight = PointLight; + exports.PointLightHelper = PointLightHelper; + exports.Points = Points; + exports.PointsMaterial = PointsMaterial; + exports.PolarGridHelper = PolarGridHelper; + exports.PolyhedronBufferGeometry = PolyhedronGeometry; + exports.PolyhedronGeometry = PolyhedronGeometry; + exports.PositionalAudio = PositionalAudio; + exports.PropertyBinding = PropertyBinding; + exports.PropertyMixer = PropertyMixer; + exports.QuadraticBezierCurve = QuadraticBezierCurve; + exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; + exports.Quaternion = Quaternion; + exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; + exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; + exports.REVISION = REVISION; + exports.RGBADepthPacking = RGBADepthPacking; + exports.RGBAFormat = RGBAFormat; + exports.RGBAIntegerFormat = RGBAIntegerFormat; + exports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format; + exports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format; + exports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format; + exports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format; + exports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format; + exports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format; + exports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format; + exports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format; + exports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format; + exports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format; + exports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format; + exports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format; + exports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format; + exports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format; + exports.RGBA_BPTC_Format = RGBA_BPTC_Format; + exports.RGBA_ETC2_EAC_Format = RGBA_ETC2_EAC_Format; + exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; + exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; + exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; + exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; + exports.RGBDEncoding = RGBDEncoding; + exports.RGBEEncoding = RGBEEncoding; + exports.RGBEFormat = RGBEFormat; + exports.RGBFormat = RGBFormat; + exports.RGBIntegerFormat = RGBIntegerFormat; + exports.RGBM16Encoding = RGBM16Encoding; + exports.RGBM7Encoding = RGBM7Encoding; + exports.RGB_ETC1_Format = RGB_ETC1_Format; + exports.RGB_ETC2_Format = RGB_ETC2_Format; + exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; + exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; + exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; + exports.RGFormat = RGFormat; + exports.RGIntegerFormat = RGIntegerFormat; + exports.RawShaderMaterial = RawShaderMaterial; + exports.Ray = Ray; + exports.Raycaster = Raycaster; + exports.RectAreaLight = RectAreaLight; + exports.RedFormat = RedFormat; + exports.RedIntegerFormat = RedIntegerFormat; + exports.ReinhardToneMapping = ReinhardToneMapping; + exports.RepeatWrapping = RepeatWrapping; + exports.ReplaceStencilOp = ReplaceStencilOp; + exports.ReverseSubtractEquation = ReverseSubtractEquation; + exports.RingBufferGeometry = RingGeometry; + exports.RingGeometry = RingGeometry; + exports.SRGB8_ALPHA8_ASTC_10x10_Format = SRGB8_ALPHA8_ASTC_10x10_Format; + exports.SRGB8_ALPHA8_ASTC_10x5_Format = SRGB8_ALPHA8_ASTC_10x5_Format; + exports.SRGB8_ALPHA8_ASTC_10x6_Format = SRGB8_ALPHA8_ASTC_10x6_Format; + exports.SRGB8_ALPHA8_ASTC_10x8_Format = SRGB8_ALPHA8_ASTC_10x8_Format; + exports.SRGB8_ALPHA8_ASTC_12x10_Format = SRGB8_ALPHA8_ASTC_12x10_Format; + exports.SRGB8_ALPHA8_ASTC_12x12_Format = SRGB8_ALPHA8_ASTC_12x12_Format; + exports.SRGB8_ALPHA8_ASTC_4x4_Format = SRGB8_ALPHA8_ASTC_4x4_Format; + exports.SRGB8_ALPHA8_ASTC_5x4_Format = SRGB8_ALPHA8_ASTC_5x4_Format; + exports.SRGB8_ALPHA8_ASTC_5x5_Format = SRGB8_ALPHA8_ASTC_5x5_Format; + exports.SRGB8_ALPHA8_ASTC_6x5_Format = SRGB8_ALPHA8_ASTC_6x5_Format; + exports.SRGB8_ALPHA8_ASTC_6x6_Format = SRGB8_ALPHA8_ASTC_6x6_Format; + exports.SRGB8_ALPHA8_ASTC_8x5_Format = SRGB8_ALPHA8_ASTC_8x5_Format; + exports.SRGB8_ALPHA8_ASTC_8x6_Format = SRGB8_ALPHA8_ASTC_8x6_Format; + exports.SRGB8_ALPHA8_ASTC_8x8_Format = SRGB8_ALPHA8_ASTC_8x8_Format; + exports.Scene = Scene; + exports.SceneUtils = SceneUtils; + exports.ShaderChunk = ShaderChunk; + exports.ShaderLib = ShaderLib; + exports.ShaderMaterial = ShaderMaterial; + exports.ShadowMaterial = ShadowMaterial; + exports.Shape = Shape; + exports.ShapeBufferGeometry = ShapeGeometry; + exports.ShapeGeometry = ShapeGeometry; + exports.ShapePath = ShapePath; + exports.ShapeUtils = ShapeUtils; + exports.ShortType = ShortType; + exports.Skeleton = Skeleton; + exports.SkeletonHelper = SkeletonHelper; + exports.SkinnedMesh = SkinnedMesh; + exports.SmoothShading = SmoothShading; + exports.Sphere = Sphere; + exports.SphereBufferGeometry = SphereGeometry; + exports.SphereGeometry = SphereGeometry; + exports.Spherical = Spherical; + exports.SphericalHarmonics3 = SphericalHarmonics3; + exports.SplineCurve = SplineCurve; + exports.SpotLight = SpotLight; + exports.SpotLightHelper = SpotLightHelper; + exports.Sprite = Sprite; + exports.SpriteMaterial = SpriteMaterial; + exports.SrcAlphaFactor = SrcAlphaFactor; + exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; + exports.SrcColorFactor = SrcColorFactor; + exports.StaticCopyUsage = StaticCopyUsage; + exports.StaticDrawUsage = StaticDrawUsage; + exports.StaticReadUsage = StaticReadUsage; + exports.StereoCamera = StereoCamera; + exports.StreamCopyUsage = StreamCopyUsage; + exports.StreamDrawUsage = StreamDrawUsage; + exports.StreamReadUsage = StreamReadUsage; + exports.StringKeyframeTrack = StringKeyframeTrack; + exports.SubtractEquation = SubtractEquation; + exports.SubtractiveBlending = SubtractiveBlending; + exports.TOUCH = TOUCH; + exports.TangentSpaceNormalMap = TangentSpaceNormalMap; + exports.TetrahedronBufferGeometry = TetrahedronGeometry; + exports.TetrahedronGeometry = TetrahedronGeometry; + exports.TextBufferGeometry = TextGeometry; + exports.TextGeometry = TextGeometry; + exports.Texture = Texture; + exports.TextureLoader = TextureLoader; + exports.TorusBufferGeometry = TorusGeometry; + exports.TorusGeometry = TorusGeometry; + exports.TorusKnotBufferGeometry = TorusKnotGeometry; + exports.TorusKnotGeometry = TorusKnotGeometry; + exports.Triangle = Triangle; + exports.TriangleFanDrawMode = TriangleFanDrawMode; + exports.TriangleStripDrawMode = TriangleStripDrawMode; + exports.TrianglesDrawMode = TrianglesDrawMode; + exports.TubeBufferGeometry = TubeGeometry; + exports.TubeGeometry = TubeGeometry; + exports.UVMapping = UVMapping; + exports.Uint16Attribute = Uint16Attribute; + exports.Uint16BufferAttribute = Uint16BufferAttribute; + exports.Uint32Attribute = Uint32Attribute; + exports.Uint32BufferAttribute = Uint32BufferAttribute; + exports.Uint8Attribute = Uint8Attribute; + exports.Uint8BufferAttribute = Uint8BufferAttribute; + exports.Uint8ClampedAttribute = Uint8ClampedAttribute; + exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; + exports.Uniform = Uniform; + exports.UniformsLib = UniformsLib; + exports.UniformsUtils = UniformsUtils; + exports.UnsignedByteType = UnsignedByteType; + exports.UnsignedInt248Type = UnsignedInt248Type; + exports.UnsignedIntType = UnsignedIntType; + exports.UnsignedShort4444Type = UnsignedShort4444Type; + exports.UnsignedShort5551Type = UnsignedShort5551Type; + exports.UnsignedShort565Type = UnsignedShort565Type; + exports.UnsignedShortType = UnsignedShortType; + exports.VSMShadowMap = VSMShadowMap; + exports.Vector2 = Vector2; + exports.Vector3 = Vector3; + exports.Vector4 = Vector4; + exports.VectorKeyframeTrack = VectorKeyframeTrack; + exports.Vertex = Vertex; + exports.VertexColors = VertexColors; + exports.VideoTexture = VideoTexture; + exports.WebGL1Renderer = WebGL1Renderer; + exports.WebGLCubeRenderTarget = WebGLCubeRenderTarget; + exports.WebGLMultipleRenderTargets = WebGLMultipleRenderTargets; + exports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget; + exports.WebGLRenderTarget = WebGLRenderTarget; + exports.WebGLRenderTargetCube = WebGLRenderTargetCube; + exports.WebGLRenderer = WebGLRenderer; + exports.WebGLUtils = WebGLUtils; + exports.WireframeGeometry = WireframeGeometry; + exports.WireframeHelper = WireframeHelper; + exports.WrapAroundEnding = WrapAroundEnding; + exports.XHRLoader = XHRLoader; + exports.ZeroCurvatureEnding = ZeroCurvatureEnding; + exports.ZeroFactor = ZeroFactor; + exports.ZeroSlopeEnding = ZeroSlopeEnding; + exports.ZeroStencilOp = ZeroStencilOp; + exports.sRGBEncoding = sRGBEncoding; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}]},{},[1]); diff --git a/src/main/resources/static/images/background-dark.jpg b/src/main/resources/static/images/background-dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1230fe4b1c41095a294b96a1625398053ca2b7b0 GIT binary patch literal 1190486 zcmeFYX*iqR_dgodR@F#&5vd{4 zB7z7V4N*LVq!N)9K@e&d-^7~^Wt3RygTQ+bM1TISN1)9_FjAMwLW{Tt)E-J z0Ea(6C9ov;UfbApT$aV&A=l>+1?fjp6{-+GR3k#0a3igjYtEY8YOGjt>OR>9ZRkDRBg_^!nd`kc=7-AC>3N}Ugr(fvE)-5y1Y zkDp~7y8kF$z8C&z@4jQl<>XH&UrMZ*jcr*q6CaO4*@OS7+5&*!k`UYXr0V5r>*)`h`Oiy!B|(zzlo7C4SA6xO%)t(C z@XN*V`n_%1D-s{;lk&F!-oJr9L3OHgjR{ zy`?AXL)yWf(O?eeiY5Ibw_8YJ7mvdRw*bsVs@*>i%pZnrCUt?DN;-oW3Ki-ctB_o( zKZz4Q-Y8o&t>r(sJnv0<+QsGvU-weMmR*pg(VS z^Fmioes2&@%T=Q>*Lkt8=;;qqllVDy@Og#V7NBeR<_Fm!PL}dXU|F~c+3Qu!@F?`( zr*cte#@O54?eHhcx2S-bbPx^EAfM-Ndz~c_ABKt4(urIT&ikv>LX1iJX8(hxb1ko3m^lyBXRA& z#s4&c{pxmOIK8_tl^H@^tlcM*_o(LCiE>f9)P

    NX4sJ(cDj0=)a=W7KQm1Lhv7b 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μ_M(5X-M#|eQ|<~gjvFIb{j;_B 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 z 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⪻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

    a6}yytQmH>FDz|LS?k<%|19x#6Fh4Fqe_f?M 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

    I&i*PY3&dkr_z zi)H;^Hz&MAUYBSa^K7At8A|At*30yrDsNEXKOshgMhP_nRh_6>azqsWu9+KUw zfvAfKIO^raW#Q#P%ceLGx-=i3wnBYyaVz&D{(*bUUB}=>@5(mG??3hbRH?k3Nwh;D z79a02X*94$OgpEJ=+n{*(k@_kS;K3hlrC`0+5W2era=)Qq)N3s z=ySUkdfcSw)N7^;+al(a1>HiQBK)eGo(I8>b{@=^z z8@M)RYqOVEW(E(+O!5+GIM3L_>T*5!J06_=U{HqBrOP6!EOG10Q4U|{ zu;00e!rPiP*}<^kR0sCD4;Teb={=_(>wv74+n2g@ct9q<1rU^0H{*D3Ea855v=V@NpK#~uG_NM z+=%?d!E(x06X{#kl2}c1OVFx>BMvwe)C>myjeBCuyFIzmEE-n-K`_hhfDiP9bM4Eb zMCo=?V9#Jbwi(FrpPL~;&8;sXV}}7wJ}_ryNTG=8yZ%X{CPGv}nlD)+6VW5k$*nJ% z>aHC3ZTK>GZ-^qGnf9iSzPKSboe$JrAO26wB6az5=reTJ#!l1DY>@$DZ*V>-;t3x$ z5+f@pxYiosTBt{>-iXI>V04#?jI#g-8-_X#L4ngi152061~0#T9=gliesi^@@7Aug zytA?H0eFXfwa5^VDRU~pl;ei0iXdH0zVfUg!#=}FcE-|Z&s_U3wvM99bI@(?nu+*T z^t|8HQ&T6kG-C}B3lY9U7=1yJuNA+^j!~ZYG=H!+>$JUAxd8w#=&t~l7T z`0y1zVHN6Ru7z?p5w1S>e(@mv+0);<+M>UxDNLA!t>_QRvjrWI%Uiue*5d26L^4Qq zgS|mDWo*t4m>j(U&M;@gzN#tv+X!URLMwYMsHO`mY{@ch*Tiiyt9dS}Ip4nS9+FBm zkJTl>5ft3)J?VX&gSMV|1$X_bR*HWF|B1Ps|z3iu}_xb_`}xPUl8K?~Ejm zy}|pd&F~1PIM9O2Fx)21G@akf+&umF3}fSaMiSw%3wsn6Tj4j3S2N)5TPuVrBB#r> zKJbA=Eyo7F7S~LjOKM!!_HF%9rfYinq4KVJzRz`y_u|*?9XO{Ov3#;%BRY;R1uMWr zlB)C1@_sJ!9`M)j30jm#bxzi+4uVy)H(rab)!qEC7q`w`2`p#QvxOc?W!6e*i$3XB z4|(+uZ5MU~)~!1D5C_=)K@P!N9iC9NU^Xa6Sm1_>W?1PZl}Nu4F`G5Rp0o`qE*;;4 z_sO0e_^RelkJEI41g}ErL%*)9!_Eu1INJ&umv*y(Uu- zyYhRnHxx=Mem-QX5=FqzF60PJbxlRaXpb0evlW5=hWSohw9~5{#Unp%Ry}$0OE%ec z4^q;%uv)%c4YT@j?CMfwlzVedUm1`{b&@}s{

  • 7C^*A3h*|Gq@_P+lG+CnH#-`y zD>aS&KGR@UF8l)tmOsE*Dzpb^%Vh)Y@03r73Y0vGoE)v}S|{cP#L!}VxjxDk&G!k3P4rAvCVY<@`d$Z`Op$ zBn!jctl-<=9JF>^4^KOUgi4UYFV~vQyviEIBIfxeS`CPPqvBQCk7Zbh_h5+hxalUU z%*#5%>Ah_9omZV7Q_L5R{iJwV%bH(ng*#&b+QwG)j`R5iIUN6{HDE&f(LjPSwof-e zs(WG8W5uy)*l{7g2haTkVGK>RP8S6n(K?^Pct{FMQVxIIlNyP6q>PI0bTGU8?=>+! zxwTo^3|6L1BAgQL-IZxD^N0eBIvp`nIh3Z+>0EvmB@`ZsY}ZF^QLWkVdmhnFis{ z+_zktLyl~aZr=jl(TD16QsI)Uds5DoXV=MIQ7xAIkX@a3Dz}yngwycFTWZ_L_&sB1 z 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%0A4kY&5{sMqN{(P`yo19nCqH={JZ6oeX#< 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

    oXYn)>eJ3yul?H)$6-61D(a>nl`OY^2V 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˂TriC*lKbN@oR~<^?lc2| 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

    v9bk3>!l80JMwd%% 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

    3UctC?11ascVcfB=o-So!O?6 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 z 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

    MCXDrAo7%S5c!Nh>Xq0M2Ek!ypfOk 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⋙FKNqJ}OHrH1)SQ5ec%@t>iZ#^1a zGqcMnN1>3+#SbNPYUhKKl3n@gOoNr~qrIJ%-k)5%4Dq4^I&MEcQxc>#nXcC8?4&^< z_;P2rAT#0pWe}%c^Rh*BO@%)}iL3?TsS&x~F{fK^d+Y6UP~~b3;X?jcyE|tVx2$x( zY>&LmP=Dgk{uIg_tq|^>W0K~T6D#Y9D&YP-BQ4yO>r*o2dS6wuC^kU%=cwr6rp7_q z$rX{m{7s@$xo2d=&&Il2WrEB~S~nTs zP}&?$K~q(?Sfa=P7*Zxv&an$jiE!BTbMkJULq}-kPH?ZHKQ*B94a-FYqt>qf^SEz% zFS9G&!pI%(&Fl~U5n`!e*{|njwb8~xZp0v=Fv~WlykG6Tm#s7^oSTMu8bdjwL>ba% z76-nxZ#@85sr*x9Y|^-_6=3zujw_dt4?br)x=f3icUd zc&@Ekxv5Cfs_mZC+S>zyrR8?Dc%l?;CD9GFV$LLXmCtymm>OgD;2mG5_;=7B0iX!>mHL;#pri7u%cE;+s7me3~H zG{P@~!7!in4}k{)@Hd^qdk+5gc$j9$NkVRx@Dw>$0#|iN#+ot(ees_0bSay40G=MUgstZG7kxXE##zrrO$41FKg$Z za=n7D*~o>S@=WbFmwZKNf&Axs4H#(yiT1Qb6Ik8e$hK6&9recWjpR4ljhnWhyFqv; z4NPC!B`z|B5%ARIHDJ<&J#k10b!2Uyu=#iNj43BTxK}dkB9YvkGWjYSSz{xtRnrlK z2>M~@OEAU7ne4u|}xa#ar+?f&tZ#IpoNEpCe`3Z8VETT;-Mma5E0<6X@?pZ@jJ z3;7HLC^^i0uP!(1Fi^-4vp>Dy^1^IL7$Le+?DVkEcl>8h!8U0zS_Oy4Zp`ED4NP@q zYJ-AlP*@lqKD6e{h_;bmQAyM|$_tYHOQO*K3WNPhA)FV&K|xt^XFPPI___{>ts&RF zAJ%ot%vjn&9X*&R)~1`v$QqRTp^_Xe)XeF@c!q_dun0rtJml<0Y`Kq3sMLa|dY$Zh zv7x>aFZ!`FK=GdMuQDneGt4!MECUmo1Dm!=hl4g89Dr#2;A{&@uXt!_uZL~2x(h+I~NK6zP#(jQVoY{l)DTrRFOg zcdoa}LiK&IM7$<$dyjNi=@}=y$C9qu!|VF@Gxg?MViW;P&ZRFiAHOa|WF)q^96MES zaekk2BfY{ZCuEBhf`}1M`%xS059k26g-N3eP{V5^e|L27eWp*2X$D?B78>>lDQ3Ic|tLOxY(!PrYb9E5+~8`1(lq?M$uC_O2V_ zO~rF351#23m1Dd@y=lx1XUvb7NPS#wHy+1@QFopv+NWtI88m0++CRU=eB1XXrTD~v zY;h6L>-o~YCoc`TwRd1jl!iw3)`kINOHk`#BI6l9FKazflsL075&m>dPI$V;RsDxD z5=LU%D7v}XlTB$#8_v-EShx3Z{jg`QS64T250AGSOezayFNC?b*&u+7n3|=6!HqpD zTgtrk+|s_v)b8G<_8H>EYqV!i#kCLHsC&D=T-~ecd)goH`;Xv+U=cRzC%Y7&wX-$6 z!yCaMHKC|shMU_c3e#{T_*N;LoO&c;tntm5z`0{O+X1>aCdLAh*RVOd1-M$u9?XlB zKPAPD@q`g88BX31rB>Sx>9^aNrHXuId>@xYmo3B+2V(ZV5fNPKj%kooZqZQFJiadW zrEp2_br0LPr3ncA-i08m?3Ads>B5zvqT-ra*w1;`JIwQa#5UWNVQl@C=`wc9O6qpv zd*+?g@-JQ8(sx7)W6zCwASJSy49?C%+f!LZZ%ib}wT^=#YC`Ad504qVRf*}EE1P`p zk(%eJSm=4OSH(p5j!?&m$_cOD5VjRm%+YmV!(q(PFIb1@gM_egwTu7bv;3af%V`Z$ z1**`%Lx5aVU*>m#^Qw1@TTQ;D_5_@77}qRwaG^Bv=6hg=5{_SzH6;t4Ivg_(i2yl8 z#Jm%~*?e!ncY-3jK8V6-ik&sBHp}6TJ zt+`It-xOK_Un+=k7&ZR#WkeaXK%0II@qd;RC;9H_#S^GO zEP1BQOjBC3HV26)XXW81V0q~Mi-+ej`5vjo?A+X~44$kKeV3;8A`lyPj?cwQ&?Pmh zfP~FrS=OLeZX4=7qGu#nm*zBeP zg5rC=wQc!n*76vV%-LFp(alvWXBgqP<P@lUj{xiIA8m z%Z?;PQIP~HSWETMbX4~)lEyZNbE)JI6ejTN`qY#1@aGvz62~5%NUmMt%Z-W9Vfi)$mOnO1PNQZbrJwNB*eq&bzMt7)lFne`;X8fo24t)g$G)kH0$r%p~X=2vZC zcD#@jI~0eTL6Wl*c&o-)>;r_#1`CvQA)K@j99QmK1=4*D#}EBHL{(IZEb2uy7} z_phrP-KQl>lRYkEsWvZHqrTZA{DlA!2%@J%6i#rSN7(L{VNcy9-UoUC#PIZF1R{szbcKl~b<9uj>%@W0wsWuKZ3utsYP2<{M@u;jsp;E_7J zx1duEQlMNQBV%3V+JgR_`DTwZ*GB`gYPj0OFtYhP8w6dQaktBvHF{FVoS_^5P`=rF zdK-~&*Xu+Ao~ ze8l&PQz7=A`a&z8Z_DZqxD3iL{PdTWa?v<)3|R?rN;Sn@5MoMG)OBT|JSp8(Gbm=h ztK8t<%$r#U6k&G>aiqPOT5RwXe~h(`orSL0Y^~-sKNB0TrdUlLN4(--IZpz~ahcVp z?{ypEW;oH}U>G%u!4+W6^7#;=PFHs%zdzcVxh;KHN?792)Uob%k0XVDUjBR>uu`|% z(q=wITA~~B+z$RJ9Nw{S?yf=sQze1vPmMI(5yfIs47~oP+UYaIT-Sgmuhq-C&(m)y zpGgxq@xDy`{y!l%7GG619iMmg?3-7-(X2C@?v@t_h|t%-{{vH|F8+Ada5-h%A%w!} zp~hn>^74U-3{Vxh1Q#x&@)lW1AeiQ521i3fB-C4vpXdKRlig>~eL3ns(MCX=P&Bty zvG04Un4WU^oY|#UaG;aMFa)f0J&~zs)QNiaWG6RQZYXC$(G@T+W(RX@9FFuUAOK1l z*=Mk^ul3Hq=3VG#Xi((6aKhiQeT>5!+h!;c;Be#mNu|lPE5c<8J&!G)WXJLSh=HY7 zrPaAsL=4w1&$2Ye#45td>;{{+{y8^6n~WWL=Q!)$kG^%Fj8TBdQGtn{Vw%>LuLu1WRv*<&1_a)IgPdWxnZTF7y|%5=RPj23^mk!HV&Qafj0$)MaiQpm zM(txiK+x*y47V9w7DCx%|G?yzW`3|}38?lps5C2ZP>LvenyZ;HY z&@It@^!M5g&;PUtHL921+;YBkE@pPpt}dl)Vf$m4(xX<_8n)Y%NYV$8lntcp2FBHhBT~%FsaXTnt zWlqyU8Q5Wv&fKzJV*P}yZPTtV%C#C=nOgclf_GNkjL~AvA}*NLVbc5ucZr z{8ZlDzGR`t!%p>NoYF+CpzoCjCAp=UAYHmeb)5z>s+D46k47p{@;BTN#4xk7rsYFT z!%PlXxqhROK1)jX96~;M6q253l5kd1onx_E3!3Ja9Q`aSI@Q`;&Mm{PW1AOgh~iv* zE|s{*iT&qJ`gMKw)%yvPA8SJKJywU$2`7%7Gzj|O)dod2TK?49BEp%VDIOB-+=6;u zYj>2R!xW9jM*<7te{q|4BNI8NB?k`I9zXS1!vExlt@xR_WdsHMRL#PmGxUjK0J-Hc*d<$x;@ z1*39MSZ=g+kMb&BX%9DChC@ae|5`sCmU`uaMPlLN>0Z7+0Y>1lKmSM3x%e~vzkgVt z4pP#=A#&*8Yz~q0sZt0bWU@IV$#Kp$%%StasSI-_IfZ69Y-2MjIfodQ&CF>u%p9jV zeSiD?0eg6Cc<=SP@8|Qn!U}}K3dkav`7i<&#ZC0A`fFY`iWbG7%UR{Djdd_eJ&kPR z*pxlMcQHHo&_wLRDx++ykS22=>?Lb7aFWAiG7c==q|1n`Mi>$Q7qi>QtaNH5wbak( z20svd$Y-#8d~4QVfzqr(=N&;?J#dRVarlOMWlv9ABPQ>RPxT}OpHI5d*9U!gbCADc zLU4A(*W`X$Rx;UTl*5f8t!=5fx(D!zP#RqeiFk5;?vdxpcf|Q>uBr4qKa*2`@yKe| z%2evlsIu(JL0iMc%^~-_RD=AiWg4gCu67vTdt2{C_pOWq8zZV=;-N;HdbY(6^*T-Y`Q9C=sfTH^Ro_8j50`&*Nq@8aLP5*;4g4<67O zbq^qsJPO+Ye?vqX{i(hC3A?yfB-QD5<4_$mr!ju|$68UbuIL*nDdG3S4c59C3{x$L zRa#FhA~(?2oKb8Tb3222OzGFYz(n-}1HScR2Q9^`9k)?%KuqHo9Bb~Fm9k*p1!`&S zu{o8xcoy8GoL}2IpsjodT#j)qw<(O`Cmlg$-ud!2_rqTfRGy-967L zEHZf6sq7Xa^U%!s#$SPiYv1PhGz-G|1D2a132D^UZCv~oH`3q{tsHJLMgfmZuLSY4 zrRVu0x}Bc|Jw%w*CTe6pjFhga71gzhbjJg9Ia~S+nH45+4A)=}5hF;wE)BU*sxqUe zs(0r;?^6mDm^B!%G#He&jj{miz~=IK330TVT|jjo&2DFl1`c7m2S?O*Av?DphUzLk z5|9e+o)X$O+?vO>()P9w2su`PYr0rmAcQeDxx*^4xbHXqdblID+AC*Ah-i8D;%Wuv zAXmeN5IBcXz~KB7<5il>_1E8MkpHFIu@l=rmn%YqNB1XV`$7ol$=M_OOizo(#Vj@y z!Ak7=g^OgVaK*3(_x;)v`SkSpt4jupI0Terp`r6%n7_~Zfx5p!s)BTwky?&y+!DHAPJbYw>?RPX_mO2 z1@}wexpZ~w;M}oLtf!xIIa%IKznhI3Oxr zm(p!poIYccTZOhtu(5db?+NrX%+`F^Y;BMr) zInn&&h^CuBdHM^3(1wc$(S;M@>K)SDh3EDPpJ2hdHs%n$;C(cVcddHv7XOEUU19sX zQtiJ3JRvN!W7bc*TUysCIKg%q<3>P{Rqnuvv^m9Et$>+XYPNk$WjwkZ0cS1YvE#j3 z7;@W~=06x)5x;36$=pd>1)&8($s>|QCIiHM%*=Q72T(P(R8fS*04i+izXLVb15(Ig~`vfZ!7+f z^#LRhzk- z)vyo3;fUpMt?}8vn&5F0a05Ju4XX*>iKnLy_`C0Ef=$3w5-i?`Nl?C?7yR&Mu#G6q zxJ&ZUVewS!4-Z}xoN6*L3CL;&L!c?1?puLlWY`v1D`=(Ex0*)jv-J5i$qHm7kbgJ3 zQDeds^;PfaKM7ip;2Gtg9@-uRy<8^kZtmfEwiKaljaPD5x-E2fbC^Ozk4qU>z~k+d z<({;pK_9es_X#TWUybWw6yokqJ)F^zno|-Tm2q`Kc+9%QQ7~#6kFyY4zJPFNVUPVy zhCiIJJ3;LmQj1m7$(wP>=|?(*NJ7lbPG)s~>oS*$VlEXtK5G@u{Z<^?wwB0=XixQiKQJ+My6Z-DqAQy*&`Q*h+j7ZCb85Q@x{ESC5l`ng@p|%uzjGl zyW3mw3Fh#(m;GJ<2#UYlBEBtGH|r1TZw)$`(dWPLRLZb*0ywZ)U4_C6&{92+%r>+o zYu1w&K6&O}VtK7EjCGeQ7q6H|;4uusG#ehRjp^#3f)Lx(S|2 zm(xUCJ4Ar1Bval^*+!OSh!FTaa#tg4JXn`ZD-me4oJq8+iNb{@{0; z;26(^z=HaDD}`ltUoXXq2Pz*W8m{zF2J$1MKN*L|ICdvZmu3f_c;&Pn z-@hj?fwa>XwUY;H!rY6xkeYcmVBLHhi(#Nko5$G5OjH4brz8HGeH*z$L?pnuvh()I zt@@3>joVJsPS$X@_~eAS8b|B-Ivg)fcvU<+<}N<{`WkD6@yFlUt~xB~d3`D=W1|JT z{ujY5Hp%mredEz-?JVy!InM|HloJQvv1uThz3EUXsrE~4R24hhj_5aLbUv>HE#r6zDl&=BkUb##(bJCg|??D9B@kWM66Zqrg|K%Pf zzu2O`N$)zJLq2S27!(q71$?Cs;CA`l?43R($v8$zx#|+jA^C8n⩔p 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

    oiOTIt}mb;>In5 zfal-3E;-(0H9Sr&9DAtH6!S`aSxD-^d&g^*0@Z~%qYXq7x{ne-7_Zyy4xYguu4aIn zUe~;aSuuCX$7Py=a#tnJnPXQM?|c_HC37g|Z2D1sw&$9wjm#4WD>0h5-{ZIFe|D462(U9?^iP{PRl#G>y0WA4^>)14x&e!sab^uA z&r9M%GI&`ol^Ok5qrg+HcBazg+cjbRkOKemz+Q~n$Mz|Akc8K_hJZPA>#ATf=3BY8 zWI{?4X-8v@JRVC%{|6E-OUdzr5H4tTN;+#l4)Da)d%UBe`|8yOFfG zu8$P~r601=Mk_iaX%H~A`LH{Lf|SWrop~#+oRAdSR*$&gg`RC~uCqk(=shN2nTF*e>^7 z3uK<1@8 z>V|LNsH!qDPVU!+bU=pxW6Yws00BbLHb*sKHL z_f+17T@kFb`kcI5I!T0g9+ES8qpI0@XNq9&Hx3FXtb_LVUczlU;d>0c5qG<}+jmP% z9P~N5KUcNCPWe#qy!do#!3hB&`AzC>E(-$dUEfJdHqw8!`l+~I9C0Ca*8)zkmhE#sdbe*rFVuff?ddP2my zC2+{7wcS02yv<$HoZTeE7OLU$)YEB*-I|@;zKhYILea3qj(D*rq2Cn+FFi9U7$la6 zW;IcbBN(*(qb?MbvC%pd5$CGheJ0t$Rn{{rC^7>%( zJ@5C9Q6I)WZ-oj>e4=CXE-gzvEy0g1n#o^4U9yGk#hSjsiXq(zO*CR*L_fnjO#6H6 zK=a5v>GroH{kHH78JDiqKWO70uXAo5J0LUjESd6ccs2{Mh;iL=ACWs(X`pk|QpG~D zr4xo38qXOihsG2=Pj*x0rW)2bUGFB zKY=2~wp2mJPi_7PSktSaW3%P9oXpkUG0@0TbWQfsAhg_Sld_ma>yt`Tl&~X_kl>mW z?ofdce?VKWSWl|`J=0kKg-Wr7Q$PC*xc?ZX(z?$3vvi$NIZ=fBDyQ@hzi;fP5scisL248eh zs4bF3lf9U}lGjv~i%%yelBF673Phvjw+bSk>k)Etmia%7W~;8XjpJNeo=(o}9J3~i zjbakXMk>csUpyxL^r3P^lPZ)P5#{%xL%vXX_7>6QBcP2D-UKXXPLRl zTHOt&l7ikV!P9aCz8c+^Iy_%tEGnGvSB~KEuW@{$k+NT`76wNTH06#kR=hm+UuYs% zEm!Znzx%MTq}LOn*=hJ@fqBa!l-b{`o%-=C6<^#aAl~EIM{VDSW;IyE(pU;ICv5`qMTif^6N?NJ1*G zgDEAsw3E1kVN5C}wcSu-MDEj081N6JWBO6MM2GG5M=yNUTEsaBr8R4tV@H4PjE?3N zVFI>+NU!nhMU+%ezqvv5jME;rqJz7v*jPk^4**EIV$*J}L5f}Uqkhmo@`3{y_V0U+ z&K&EY6T;DS)+VPB|9gnu$po{Io9lz~>NSV9M;V=u-S1r!={nyTX_WmkJAPdKnj3T? z6&YOeYv6t?IPUv4A8@>naSU?=6w!uo8U!?}Y+0vd&HqhcWSU4FD;E=fzDk*qpTCao zL>Q^^nf5*`v03&R54H_T`6oyxQ@w8SXj$d$v5`!q)n!V_=Lh{-bRZDz?o^ zIK#%1L=VQ+C%Sjc7IrN?ou3PO?E3rR=ZL>H7l#`c2jWS!g`gqa<5FhsD`a!}%dJMQ zQ>PN=HuR(V3daAwx5r$g!69nW3_$xB7q{>AkFpZ?%_G@tdJpzf(0*Y3kJ-*$*RvxY zf%NCek=CM5JZ0~?C;WFp>sREmv^5^7-lfvEht4^q)V-@apQC>zm*lNY^v>(?bN9R8 zu)XYQjy;0qdh}HoUkHJ6##hnGh@m?1I=3l48JmiUFZaNd(W^)El)>TXp~aewJ`LBkh{7Ow(L#^28{~eM z7=FX*MsL4LPfZKI)99D>YO`F~oAQGF?l)GkO$NS_cw;N?XZ$?K zC$i{(LJnDK&C~0wMp=o5uQK7obYRmilb^9X4qL6`mN_T<^wY`5F6SH*)|xA$=IFP# z6SI<2?;}|QDD~Jkml8Y<<4$-a@=7s@-5K?3YEY4hU-%1022ek0s#mWoWpsHKY`M?6$KVs}4vw868$5l)GGZPDLPef?#>qr^oyG^OHdDDv}Ms9iulba6S7PHak2 z$CfQ_M}8PS7ZRw8LGY%aC->AQrAwRr%AsHmz zemhbXbVN~k4z%;f{}2rZ5E88{T^jTigF0u84I>m`fWnJdhuP$ioZHJZIJ|G1gp$Vj z06WF6%XO;ioiXGjF&`Z^lQ~#lW_|rvi@<}Kjk#?3e(NwrNkv5h*|KAUg%4&*l}M7h zk;{_MJ|Y9O?z*ri?OTt&-TGU?)u;?w^S9vPr}v_I_pX`VcPbYfX2-#OnO?5Eu|1cW zkNi=1o>xt;SCN+&MPkhiy?8e4MEr=p%rYQXN<2!m{LL&ME4?G0qvVj zI|yT40%vXN)u!c{6Aoo&aUgiP9zA44z2uc*TgsP9lCM`R&lIpWg1fcx!FebR zMp;|8)#U#Ke#A*YKC=+5*a~;BmgoLHL`gyp7?~CJ4r7%nA+Y71eLeJ=0N%x|K;fAB z6NgY@O5PZy*(-0UI(i-Kqu`;86>_2TW78IX5(m)bE8R?%#G3r@XYijL!TmF)LjN?r z1{1q=)^o{0!xg9yl{-FP(tsLT(J5*JhlTW8Z%%F>=>FPW_@*JOp>tp%DxOOozn-tuMU9eQ49-qbfbjUivFx->O7 z->3UO0clMC7{z!4R!;9c?_jBMx}w2c$28i2eiAzjSY|;KAx3K4)$?h)VbVSC#j44k zVOtMxiI;hz`gH{_h{>Nti>98?z$yk>aT&Yd7vD}L7ypvBFSq}qU z%hL<>bVr?7+Up4G3LP~fd6?E05DdQHT!#B#+`IAc=8-eicVk+b!D_jT_|nV;&4TS9 zbapU}IfLG%u&H@*ikfXxTDv{k7j>*hcC4Me<|#-Om0domvi^HC?nKoHz#&g%H7G@isnRr>Q#`k1G5c4U#`ltc$ApFW|cJ_=*Zdc zWGB-=WM}m6BW>9oslN{-jhP?IfY%86-r2xj4f}R4vaX+v zC9sEVoon`9U)RO+D7M8I+~Mk3(fo0Y2xX*fiNtWNSdV+zXuneB)TiD=gZiFib}5m2 zj+`5F(Cyxl3wruDiLcODI3WGyM#z0^^7Eq?SmXz4Ga4@woF zIACvRP?I%bOPyw?h`P{sQCRNiizMaeSA7aSRx4RO*-F~1tM!CAcpW3p6@`kHzV7^` zL1I;X`iiB)+_HhuC#eTZa)PreJqG#)-vQeUTVoJ$nMLznHSUW1FHN%C<9UDT<1K@n zb&6{q^?U?>ap#x*Y&KoHJ@aC;7<`%T1~vGl3^+9)ucy7++*^jXTOa7??evztRxpE3 zNW4mFN0x5o5Wz?ycYt%>!>h4+x*evFAp|o>5YgOBxXMmF_p3+qkFU3F^Ws<@1H~Ba zJe!!PBkANdtQGTl!+}_}RKM+Q;s2e{l+$cgpbeBmf8(#!)^_Oavphv)1wti0A*ZD-#o6RZZpFFM$Dpu3 zIciO_s2I{f$2Mxa&?|om$uN*riqZ{c?AHav@r{+!YAJxSaCa}pK;&4cBu5B zXs-o&Vf4?PT7(`G9J@&8r%uf<_q@Ls$&-fSTdK~OzPSrEvcb9SzTjHbq;yEi3~-OImN!d(nGwQNpg~c z@Lzh_#>pL|?;M|F zRbiR0^S_8y%XN45c_Rbqd*|~R?|T*f<+*Sy!DV1=3q1P$d{%U@kL<0}ajFsrYyS0~ zn6>T=l4e-Vf^NL>V2u!Jh_3xCHT)*HIVKBi6gWK(FQf6c_MgM!t*d7PBC+i+vqw8l z8(g|(z!;FuMof#E|HarLt8f$$_QTHZSm96k*>kyR_%=R9DcDjIBUH_%^^JMSZn^v% z)Kr;mX#bk(pY=P~dCJpy?aO^DfyoUc-nM$%1#@(M@^iVZQ>f&S}#8$FqX^q)XMm2N#Dht9J33zW_N2n z8oX9>U)!%iDqMDK$aNSRpx^6U`b2U4ulHqVl5RC*luI1k8&-UG5RnYsQsebe_?jm5Ygq&TG z?L62`RYR9_+}Y>Pd#nOMAkYtWiITzjr$0}G))B>S2Ule>0=7ba86V|I1rhDA5fR}y zK1sU#VOM)T-0{8g@=xVD&(DDSA4`x1CO~tOK$msb&+9@-F~+5Vob9+5UL$1#kI)jb z{!Z3qbo(5+_Lp?Ohw1JOa#BxXwudSmJ%`TD=8_?ul_;?#ex0t1B|DZZ&kRb>pdp2f zVqm~n+O{q}HlO9*J!Su2V5T?3>*C2{ngJ7N2W?B4SW98CsZ2`cWxg;^?7CA(_7>P> zh>I=U-hfc|VPB@$6O~Fs?>|sKF#A1t)~&;R8n%%)&QE#&0K(4jvoehb`J`WwNR|KL zb5~y}`cPIMJuEu5EJU=6oUE`+)E@xiVt9Qf8e2-Xo)Y&82bXUFB@1}4$v?_z5pJg;%#RLD{EE(e5eQ* z#2em7_UZ-reyB@v2y~#*spI6Oek<_%f8X6PbHg;J01-&M+^2X08*Q7CVw2PTFTO53 z7OapFwtM85s3T!x=uYI|n{RVVyg<9Z-+Psylc6{fIFS;F`!L{#pX=l5x}F|qr4D~; z%*$Q)Hl=Thc=Y&^L54+P%}oWj4B;rj!;NiGJ-xTb3VLYv{F?!H%0nxa#k6R^RzKwG zQvwS~NMQ3VlQGVn3$E^`MJj(vpYJvoQ0(&gn%g7lf51#&##y_#5Fgvi$Cg#1dBZ>W zwrNO^Vn;u~1h5Air>1IFnH0+|lJj0__z}^TE}wKi`aJ)2^Ulnw;HNWBoL9fjH|XGH ziyMxG%-LF3@ms6SA`*Wamo)gDp>GN?T$`PXotJgl!TXV6$o0>m^KInY@ZpV5ol4RD zx|h|;0^I!`l!RGQ&eU~YpUggy*{zWHaf)Hf45kHcEAa7^#N~#PpZ#-vB&1iTEs0@k z>P)&-Zb--uX}b`U@`Mrdt8D9eNyfY72L~3c^)EipEQppLYxYOhq|=+odi?Y?isk;W zRD}ki)B`>giQrbk<{MP=Le3oTJyg|I;sgJ{&Z%ofg6?YngXD9%QRe=a{=5{B&?tyf{{q*4UvL*fX}Vqu0a;Sf)}D zIY&D-H|voLO|h}K#c)hg1?;2Qh0Y7A-xFlZ09^hjBbS+BX8LTZfz_WazqHP-WDi8F zHQOQbohl?0y3l?1~B)Un2a8C@cHr>U1X^d)Qh= z-*h=xW;PvwOa-}7IzdAO&N5Vw1+xT;d)y!c{mVON_JO-xl-*CvZKCej69MV?o5feZ zZr%D%axVj5Y#4TN3E!&%g+sQ&>Er1?A(Ek0OQgEhe)`xphK>BVv^tfu>=)J6V^#FI zq4yWS39Z>taG-_N?b~^ByjgU2x@-)&pOhRnV*Qh_*2IsdrH{WC{cL|`twsUE31y79 zmtKuJ#*kwsdQK!xsD~atWK_=iX?cdeTZM=3dC^AYu_f6BMSM{q6bbpj0L-SiezJbA zS8H*mLE%ySt5{ztDH-RjWX{|WFb?aKa3 z`jwY7J>5+;e?uuRnaqRjhfkd%oADxbk;4X(oQy z&Z}&l2qdth8w3a8hg*k;c~GPhVF|;PXDt~T=)D8CSWPcDAO*!0T70= zJXEvny{-rKl1#Z3_K~6UE|qL$+SLam~HQ;jPRwS!w2PA=1P{xqN#Q8~vl&$5GrlP=& z-))2T8P(7U@HENPuuV1ikB>XvU+KQ*FShQQ!*~gOM z-Y+1KV|VggaH@AI)88pcy4)ELKJxJO+h_ZHv#@`26;(!>N=iTL(Ib&y9*aK&Z_sJf zlf2R3-SsLv`qqQA=LNp`Cj^t&tN$6al^v$}Z;r1kE8AP~aS;N7Jy5=T5(0@NnrDic zkD@=8geaFZ zj<>5ijzXL+yW{MhDc>nTiS=!rM7IgSVl9vEsvKuy$GR!>%|JSQA$Mb-Yuvk#8doJ& zPRx;WI1ujw!qxiwIzHX~p;eHOx{U{*E}-GfTI0T`NWS5G@Wz(NfK5jaQz4GM@;?Dt zxA*ED7jM7(q$+adWa=ZXi10*MtEr%sE(SEh+gco2?+aumWv#j_V!wdQU4 zGw;-A3M&YDr!_N#0jv7GvGbyMq#mmNUo{?P1VkCR2V78Lv7wUx6G&L}PkA}a(f3Q9 zzkae>{<)}QLrZqT?DE%3dU9nUgRY7c#q;NBO#b}C3q%Po3deQ~X65B#;DPMUUb{%0 zb4cg=ka^30lY@q7mB?#Cg0IbulMsG``EzyrNb#Ow+P+j3&Y6a3W=3qCKldo0awYHP z)566c%WX1ijDe5)5xR5aNI2^Qb$@m{w{$ufSQXtg*1Uq!)mGcJeOLj~l+CtrBvnHz?FAG5WpNsDkDf>gyOR<7FShQ*|J(19)~9;IZ}y06-u zZ_d2c`ki-VONx_zY05FIBlFLrRHqha>z&)1TsF zr(3&b&=4$r0q!80X|e0$Q|*SDeXKc&%8#_aiwOEq4`5NVJRlIG@!pluxh!zU1~`I^ z48%dz*sE5W@>8p;5g^AY?KAJragV)mDky9zjEf3u^L#AW!fsYcy+7lj7p+*e1yX1( z+F-<}m+R)Z>bb7Uuk!t=cq&BoOL^|O-B3XmXwYZ_FNX3_}W<|dU+&Znf9w?B|Txv z=rUZmq?*2XuD@r%qwEI>>Gq{7boN)~7kT|7z#H+=hEvLYc`D_Adr0f?{I_gwbodSd zRu&Z~Hr-X}J%vM?SdfyWk^V@!^do~wxLo7oK2H*&H228;J zIpsI8D+x_IF?mJL4Z7*wBlPyM?FeG=iWqS;Ehdw)NhyAPUF+Hb%7e43^G#X?i_zGs zVS4xg&(?cQBm@ME#esI$SNSx;Bk%DmUUz1d6lyp}Gatnoh{*174qT?%OS9ct7&-W4 znu{G5o6m298&clA*1Un)U_%t|cbT76|gTgTcPf`NVy*C{_DW6g1q&{QSqsv$Afv^~lLV z-Uh1|G4i|Oan7irk-H*;10UdA-&oIPjyi4h+d8wV;t=aKML_y>v34WcS}#HN)o&Wrj|+$2D#+Ry5B#LKxAq*5_i?%;aF&+OH;R{^?HAM732f3Dx#TPfypoM@aP2UFiQHycbDpY+`VpHRhDX3)pwWk z^~)5GP?&99LBT_fLy|*NmWLQX7>mF9`DhMtj-*3%{ODP0k>t3QUscHH;5q;6HynY5 zFCHEnd6>1@{EJ;*^zLs#2tbpN!|$ng_SnwjgKyhG>|l^K7`(7VLxpn(Q{n?kPs#$Y=P=Eh^Rs?kq zfwNN>yxSkU_Dkz@TCM;m_1TxF&$Z4ih;PmxbP62-qYSqgcx2=fL3^X1hi-iKe*&Z! zGH!cItFX0FZ63|coO$-Uw&~z2{$-GHEvQ23@E?Jmke2@j4RSbmk{=BSX$E>jQ)itm zJ!{m5srwp=5zt~(q)}XA>X%}sm7_+VfnE){>oF(KQte~;dLh0F)g5UBYPc+-)8 zFDCJ47s%GboFMI#gQg4j%q_4p-qDlPr&?9I)}Gf!-%ZO&#f)mY8LlfkZ3N!WO%6lP zz4jM+Jd|4n^1i?5pV0R3uV}@NKOkEyTW-ZVc<=+R>wf~4#6PA1aWBU%y*8`uuh%$f zJK1e1832X-PoS>%k7@mr5zH)Sc+}=^hwzEmM@nC3ijK9fI2VGQao&s;($$KcT}(hW zu$F}~dVQnq_l7ph;XCLZC&6D!AFcLNX3#*jvDTs$mR@n7BK+^dg^hF4xG;L5O? zcN7MKFWPa+!|Xz2Z-4y-_c4@Kno;l(+8pPD~1SXq8mg>bcWxnBiTU0uCIxjtQz z{^Oy{UXG597`CIVJPOaX{zx%lvHQ6$A$0E_-H=w|Dv<3RECS*x=l$fWt`7$@NlAT8(6V^X7 zV>C$AzM$FuMo?v;&;FP{jO6W}5~h`qt=TRUHK#9gv?S)D;DLmqyU?;}!!xrf);dSM z=s@3WUp{F3);d<%F2wp8960)4dUML}WBpo?u4fPyPnC2K4Mq(X?r zsKw!PsEYRn!Z$GAdVp^qT@xY&DPpz!ERk9;zAzjg|=5nCQBSv>d>ShGxPYA2DhoiFcOm((u8nT9T@$>%8AUvE#-|i(OJ1s+C=gU&; z&fgx&4j&u7gL|ho`%RlPuDbu2BL3r1hNV=Z>mjEMfr(Up*v*;+z>S}MCtrw1Quz-H z;8`<(4bO3o!txJJ@g1O~oM#txEFiFsq0NTytqS-Ra2F&tJfvU6LZTpDo%C-P{5kkhgj51xou|Q zUM0W3vq;_wAnBH4H-k56bqkGoThjEWpLUljOTZ`Ev+vz$ojv&E`k>w=Tv#C(S;>V2 z4i9rEduMzAtU2uudpcL zmu3}Lm;|wU@`Y>#`mV{=@QnU(!#N{ z^>r_oE$^N-zB31H0Hum1;Hb@bwFuS?%KO=O3}u_hx9^SoZ)Ih?i!Vi_CbV9Is8kto zh^e`+d-yWdyf8oP2c|K--_{!wm#~LAWtY-yXIfY zxLxa@Tzqf^gO4WMsy!-CKp86VMR3L48<9K}A%%B$RZ5>;hM%gndv`YRXyQXgh=lRc zsYcdbd3_eO9tz^oAP^*?WFP^S8C;mdbM1pR7jAI!|FA`rat$o11L_Q;A#xu&#if?l z9;st62l^`Z;Re?PWHUKL(2U37jO*YmvOg`ewe}d^!a{%w~8&@5|UZmf+A z&rTfzxisqWd1aaoc_4#Oksb8;m(RjZ~VXK49NhYOZv2VaHAGpco?`&L#i#+YMhd*$fUMber zuelf;KLMksW|pk`h17G}4xR<@1w)(O%EA3PcouGb+|E2SRkfkO0FyR(yp*#{9D{Rs z%Ynes^hvdT*XV<032!{E{Sh}l-#KddsV7=oeCk7YxeB-&szdSy0--kwQ?jf39ieo7 z(t+)KBW!$CbqhTj9qb|@ZzWJ)Su!JVDRa=*Gpx;WM#SKQN)B+$dO5f`Zg$Rjbct?P zj-vsH2ns(sp$z2lBA`??%E$igmzl7q&(eQ~nyH>&#T(nuyb%m8u{<12&svFfiXnb2uz1!aa>dHSbE)f5I% zXUH3osMO$^^}t@Fk?t}nmJw{FZI||=5^a6#D3hDxB_Q-!Lh%NoAL5Hcvt~qGNqKp@ zXQ~9r>a$wHwov^E|4+SwgU`|pH{q@X-obp24Ps%;(ncJuRCY|~%56K`SJm^m>j(Fc zuVXgLV~ay~mlA*F&^_^X&Kn>!kJ!0#+tFffS@q5lgzk|?j2pqN$p4HNwqhUakGs&v zMtkErI;++`7ls99etIj`6Z_8$&9D?jq$3^|?UDO~hj)>XICjnOV2?u`HJ9Y#u`rz9 zX0@mHDR%*6%X#p#X)$!tUO@APk`!7}$t!^@Jv;%`*lafq0u?Xy=Kpo-G>1C6LPg;{;u z(TtC_!7J(lp0!EtNAz2x6rW{rZnm@uX)A?Akn-Z1%dzWA+SS##h)Nj97+M9|I~MsW z*e_S?*d=cFn^j3g?s=K32j>Olitq7Y?yPyv_yS$MF-0Xm#StTnSFL+D#&D05Ltyj(E z!q<)*{iEc0ajwuXuUQLB3g^Y$lIdfVxZq!(t|EwTfavA;gk52R>}E{<+^NuYJWCqg(fdHaQ`knwA6( z#AOr|@cr)_epNJIcW~rq%%e=aX&tkcTIJ^zh4`ff6p*t%w(o^-7vDxxM+0T;>vA6} zgqC;g%L)VfzpjL24z7*6d8n-+hZl2qm0HCrxkblEb1x%T@|$3%Py z|K<@lHmLc?mWCpun`quO6 zy@aYgTu?hp!28E35UH@$Z- z8mX0(7_DxzVzseagc^||12H<(9wkU6l2}0yv15Pl+<(CN<()^)Yn}^ za{qz=pi=JjIgPaQLIBI}*N@FMsA+yVWe_>+6i^l)L>XG)ZhG-A3kR$F{T<~bT~alt zGJlByH&bYizenwp)>K=#_KDgV?Gh}%H5M>?`*C2k;#A1npX9-eohO+Om3)c~e{^pKd$DFcQcdv7Vww@CP(K!w?? z)T3?hN$rXO8yyx2WJZK$)H6xssw91@0o&Y4i2T)+;${-v3q$z6CHLNZs`l=Efsj$Z zWI+L>{-wy(fj8&E(KJ4Qah8sqatKtQReL}wL~QAFlUzNH{52DSv1#p{vJ_*?u}^o# z1N7syEW%gi9@0XlrgFlJaXv~~g+kV@op#prqV*w2(9VVtbtUn1NX{kh<4%C9&YCmC z1J{5j(Iwvgl>%|hPdH{d=V{x8OT7VqT3*qahVZxR@(xcDeXf~#-H7_0_9Vw+%WY(F zgW}<|+Z|y%;%H}6xC7*|yDvG8&YjLIu#+|^t?bJ=OYg_X!rhkwR|!$x=} zXE&FZ2Bv>aT36$%8iv$33xA3zZf`%O-U)r)Qkv^5k*B`?!YH`PlAQ6w{rGl8xzzd8 z?DRsL8(EsK6=?Cz+PU=IY^EnIDkk_vuF`CYb# z{J}F3**p;fS!Dw#BQ-% zYn8r~ny5v$_;r!P6!h(eZ&o?Vx6IEDSXYAazFP(Bwqd03;rVv#yX4D`x%vz=H5kyV zRDy7&WjZ%yI?wJzvsnp!Bx{43{1s}ln!$GV0YDr^OwrXQfCyqeQy@ZEqmQE z+qqj;lAsKiEEr}1g9HF2n@@nkVbLmvGNR175D zuLgv_Jg=D;bitYP`upUx^C9GoL}`6$I##?(1%2_udJWvgh2jZ;dGuyUwd$nVr!=q# zG&Z5xglqlZV^z+3U5!p3O`jR_tp^-|vriX;vg6hcpH-4T+}gN)p4t2yW#5#f%7yG=*yJ^)%#~I1q4eAOhpJ!bsr+62Im6n(uoT5( zT-4glC6j{>&GM~MU^gio3q*$cUGR8v^}bxh{+=f9fe|COCkKO`4-Q_fphIDF=nN7#Ia_E}aCu_+;D zKQc%BS$|-Ud=C~gMC3Q=Yeq<~qqdb^pVd|6h^U^=<4Fovls*VtBOY+c`JceCu@?u7 zLp>9NO*$`34HgqVU>E=Y3EZABcbv$kWcIqy&^v1Tc`*Io z##0~7w^a$Ks>asehD|>21rIt@IR>Rk9*C~Wi^H?xAx;_Q1NHH43~JEY90L^-wP@cz za36q&Bhb;FC{Vv5;&B9}MXq7U@9eXdjwjM>3PTT`&eZu)+e9_|74umnZ-P zV->Ni+$)$RaYd{@1ep002}`+Yd~Etui?id<*0nk`EH4)hW+5Wx`t(`k-+x0h8qr+w zuID2~NSB02&qY4|(ge1A@fDgMSL!%e@s*U%IiN~tALzKOe?9#eb~X6C^wo|wtM$uH z0IEh>Jb|R5wKq?k52GPWX2g{oe*^Q_b0ttju9X4PtdIn&2Za4wk=#GePOEUM#QKQW zUYkGj=CdqJ@VJ}y=;Davp)dQ&1An0;k8}RGc^W>8y>@1^T>H1fHbF$xj*Lp$8VKpv zm6r_jkSUBdP^~`!I)s zH6 zOV3`AUOq=8V+%DUt>hmxiM$>)C2 zKVHNh70ha4Sje2mYm72FHFLZR;YuMLDuHO~Fu#7RD8${lY6ALGb7=a~_`BtUFMMQ) zSVG{&%Fh1;N}zMCPG8#xP^CTf@zpgzKq!FS-1qf6VR1!PXyl-pkJ+Pdx+jy%%(=w^ zoZI;3o;_yFyHE4x*VCiZeW&)=Rz~C~BIFNlE4Ca3){usD-PNopd>mj>5&1GXqP@@f z@$Oo4$@&l!vJ+enw*@IJ=4Qux=GMo+stVG?Jyu>_`XPUCQSNm6%>#OeN_!DA(nqlC zn=lfzKWu%5Wn*n&hEVh8sD?ut&r(4SRwvrK16gfiS9GRTi2^6f;{eWlqNR~fa&RhU zcZ1xtUA~QViM=vl&-#CG8$L7N*uV>Met7#;E7Gzz@4@k9oLTyzv^NkE{JTV(u?EVW zNSKc$#bD-RDbrhMDf|F6Y;K*Om@^Kh&V&}vqp!qYHi{>n_}(-IKi%FYmvj0>39+^^ zaG<$ifEVtPOp8%;R56r?2b5&2(Y$Orw$9*d*D*Ta6A3`R=^&m64VSLqo|Z0aO)Yhr ziwU?i<^BCfiS@6j4oqIh27R%T=e1;^PH*y`sd&n#`O&#@!=sJ(dQ!jZoZ|ayvh_g6 z+B?txg}fer*Qt5S6mImgH?;SLJ-eeMd=V4vw1%(e%y}6j*K43)T8VY|)|!DH9smj& zc@~_kQOlY6c=E>L&EEeWE)^Fs)go74+B3%HkHDvAb$xQBbsAN(5=Kcm9V?goRyr=iUnXA% z6Ex%B9i~H;`WrU-DkK zUm~zg2nmT?pA4PG`6#Sg(boHea(86h%anHsp4oxqeZlrpus^a#wI5fLc*GETO2oj? zXzbLBWXr=BER4-SS;}_PX(Z3d#)7?YJciIxRF`d+M8Z&4n#w)%JR+S?e`07p@Z*=k zu{U^mh*xKWhYpGL}$4dKn@&t~iFszD}( zg3?;R8+#fZxnj>KM-?9(y%Zst}g?%S{| z^HmM6kp(YKs!TwD$oMYotFzSo!tjY$5h}Cm@GTT|V1|{TTvSsz%9*)*C?`+j(`7Z-yWTR4j4o`%uzP%vkVge`hi594YC=dhl>>{*^Hn3#Y+hY zejK(rSqmRhElh~2t{gkZ8+e#$PK8I<3kQ$7xX+d?+1q}mjb^NQ>H`N#lzhq<*JrjlQ^slZ*DF1X1ocR4&J>UkQ}UfXff6g$hU|iWgkaz)r8!j!L+Pi2*3@-X{fib-}a3k`)#C3oBYVnI#dq;)Gq`&n^ zRrR=7o2qxM?W#RbU&a@d{Y85gJzLGl@sl8o(P}cVf!dgK;y*Gm`T5xsY;^6dhKtpo zMF+IKek&*5)EAU_t6@gk_Uh`Vhe!WUKuUUD@hDy5c6xIr9xZ7L!uu{zNzPBUpM;}a z5;5Irv3_(y{N()^nH4v?cRDNguxZH#-Y}VYNeBA@Aj&`|Ef8)!f@YI#ZvgDD zZye`sjw^>mVYFDqJBWT5*ahr$2e)LA5@j|%-}ik4yzKrTAOmmdA^XCUhI`#fzV|3V z*eU<$^%p@u+KyJWJbXMHA6mk_Wdcx*@a($F@m>2Drtu(NETmvmiJyyNMsM|)?2%V2 zKrlEeq`Z`KubM7x@>@VCPU|I3FT+!>!kN?pZVo3lG_C4qddBJTl(Bs0Q*@M5W=Wp}X{|_@}pUwX;jto!FnJzrj*hMU_ z;e;_VW9n&NT^uKhX$`2Px}Y_9KZh5!^D&Sik0%W#XMyXmfKJIYiNvuwVa}@e7{_Vj zP`u);R%uST>Y$59W+piX)42UaIh<=^8D)EyHPQ%e4$5tU_V<3SU~i1C|2H0RZOKyC zufSVC?#%J)k;32CwL3VMb+)c;LBdD&V{iO*oO4LwYEMH-u)m{CRnz>T*@o_#<`mJ6 z^QDZXrV+;#w<`i-YqGE2D1Ozpc2z7Uj?6V8pghs;EmT6fyL~gM2#X=lLvZu`H8vn3 zF;3+ja(w*J3tD=xY^LFzvl4#pD>opWDthN=`7h6!*FUbU3G-lB2G2weB%Wd}i zZs_K`x#e^T*}apZZ>Ea#-taUCZj)XYzgt*Ob6lO@)Y#i3eRv^U)h>`CFL5%VXRnacX`rqWxgkRE0@6h-NeF%;)a zyo!{(AmKqTH0w3$Mca(Mcu71w^~}P{DvDZ^?M&*YdjXBznlkr9g;Z%kkh(4%>Nl6Y zW^i>u)i0&v5-#pKD}DM#LrA#-^V2Iz;w1LVOehl0j#kTEY-oy=Mc>w`aY3*V@EBfR z&$eh|g{82%)E(i#6(ji*g}zGw_h=C;%Q2toMp~Z+(6-r|sbECqGO&!V>N(U$nW_HB z#(*VWH@ti7D*XQ4x1X2W7)HLr!U05ww9sh^kW`c%6VK$UI*ofM)hug$V{F(OUsscr z&x~HMP~gWG))#aH%aKMBET45s6(kiY*`=gQr{+ay?G@!@VQD!*Xks(wBFDT!NVKW2o6Qua~L>I?%$Wu_If2dqQ(!h_1gol z$S3!Xj2(bXiW+1*{--I^c&yK^HT3U{v67WNiIhQZG-zt10zYTgtKx+$qYliEHen&@bLf6dlw{wvzj zF|!Nwgi$`Vu-GkyaE-!)n^m5}{QOdTBYN*k8?3f6>kZ(49#eM=wfAFVCqln9c}1x3 z8O0PLYHcJkH%=!t^l=rVJ$~F$!^A`L#;cWGOkUB2h^ffc=0HgkCj^P^YK+(*bZkYi zsc0)ZD@b5}`95K{a~a?#j06ZLJhKzOtI^h}JSLJ_^0vcy-IF#+4mAaD|S$P^fn}ZLK^}Jl)OO3)V1< zh4Up)I@2>!47xhR&|+WE!HRhwHE{&x{8>}{f%V5f$w!B8>b&~5+IR1`ji~1w(6evZ zZH)=79nhA)y6Opp$VcyKfwsLsvIY~9&`jIBOTEW*R>WjmH8M|-1ZMKHN(M^ZPH^0G zpuom$c%Wp5RY7DCV;O>;iH1TV(W@$>u5E$7GOV-xZ!G`au6#Hf_W_v7y+wZT6vabK+Djc5nuwb2519{|@0w})0FO5Y-$N}u z?5@>a!YdB1(D?JGAts~oh_6`Jk?v}J4V|BtvRIO1CO*Wo%1E`eG2f36p z_IQhHQUJWluI_wEZfEtC6XhRdUlyu4cBqU`J}caJt?EonL>`lrl`T2jbOx=m;ao#$ zqCpB9N6zAk22~OKH!n|XP9bFwN!`CAWkI+p{ux$ZC{y@%=7{anXM#^YlY!0|`9Tma zfeD{$6Iu=IB-=vH=BidUtAC0ExkK_4!>?JoKxU6!yn1Y8=gUEXR-vt6$3o+Y0d_%6 zOr#rcap$RY|1f)mG+)+~9|B@izS;x6s985mGj3k5HPsXumwm2p6msmx%m7BoZ6HOP z7Rla%Y>KfCujQ-s8|yR;*YmGk?$;+Wp2uFqbA6B@3omlwOqQoUGJg1w1ttm{@eN)j z88||d2NXL!lW z5t5nt76}bXXkwxXTU!<>yRj9|t>}t4zNU9`chEuRy=#!9(9cH_V_z;J4qv#%t6aDs zmU$Vk-)ay}?xngiyQ&eciZhRv!yn6yO9DclkW`F4wgVfn@V_zn%P0Osejs1yvknZK zFQUcNbg)LLZ`~7rjR@Nw|E=%NJNRL2Y01GJ<&gXx2R&ET#0S=Lqj5G9Z*@YQHA(=ael9X2xezQIc(v;8XS?_YZwt+u++MW#sjN#ul0Ow?E5Uu~QvF@l z>O-c+CVa`2s)%{+V>6Xo3RpfWhcG;}wZ#o#txtG>{z#u{J3Ho^>Z}boIuKf`M9VAD z8-vZ9DLm;+gD`F87+zWJr9A+7iEryqI=A73Y~X=?=LEe;Rv*!>FY2UmZKWld>CA}V z-fgJlRpI7BwF~DFVa;3X&ATRAlx(!`qfU|T&CayETjrB`mkv<|@b{zY-6(i$W#$my zTj3v)ZwXL<M0h{!_C8V z)>Q=}YzIFy;^k$YvGZ>NkA25D*)Ys$u$-7X@lCYA{G5wWP*bSSX^;>Me2M; zgWP`n3KSiZ?G~$eA3}<`ziAXMdH4dLeNwx_zNmPuUze+pHxG|p9a;z{$0dftanZxM z1m~f!n2L$T2BnDLQj0RzIk-;BDTV1j=M}5#T=ZR}t6UGh?7pXglmr*+efp+nr3|1B z)J!M1G?%S=z+rV=%3>L2dV}c^F?!~`Vyn(;vwPat@&%vN*NoDv3%W8Nl0hFw-L{-36^!^`qOeb;`hBu*ax+v2i~6WPW32Tt~Jz9$@}u~{lnzf z6Qy!g7osz(!n5f^Bc5EGRh1Uv-aFb=WlBbHTl8Qt||9WAcN4i2`WVGK!7EV|c! z1pzwoI&WB_L@aKF+I}Ng{Z75<^*E$L$f>keow4C1`_glg`f4tZyB4sjGI$s#dR@P0 zT&VPxl0xOADu{scy1R`vy@KEW`t&r%|3reb)2ggf`r@NPmIrC&M8M)J+!{Z0PBiOR zjxQE7Fi*1Kam!tt`T2yyj?oS~r)DEQP6_nm zUhnQCi*%c~=LLi69lud+tdyy%hHbGQyfF9`%Rf$~&QVnfe4~nT&lZ29u(p#@ZR#J5 za9i>(F?p-59;N!N@7zXG%enRyTr?_Yae zc?LF9fg+5f-L`a6O4^l&emP}`>yOWAbL5Ki8~rwXvEWLAb0)in9tGUF_577Hh$HnI z2El9+TE~O}h99DiT-TEW`h|Q2OSO3FdA%Hy+i4u5Xhx^>ID> z*!#X_XMgptZWCxoqvhE7x%98rJJ*gV8OIo78PpC%UQSh#Rn^8;hHnM73$ZeSIbV-p zGkE$Ul5-5BwN zFqU``eTWPna@C!ud)*CvH1`l~)+Th-DY5Af0fzA0pn$@g7WnQG;mwOJ@MWcDvI+kW zAmzV89X{09`$sJOF5^bri5FvH2c}8okG|d7!AsNe2{?4L+7=WMPP6vxUj4plwSFbT z%01QAys_tWv>R~Q1hnHEi~e%>F^KR&QRQGe5-Af z_4Ccqp@EWfR+^={zNmdia&T-ceG~CdIG@^URWYO-s56L)L?c?aA!Q>lo5lUDrJZr^ zPc3WE?<|8sldHp1;LLcTTOSJiPo6yjnG&ctI?B5BLps>gAjp8<#6>NSS2^S!Y!ma#>Lu@O1)^9^0Re4 zuq?ck->5k!VN^=Z-5Yv9P=&R6i-4s#=V6HITHqvMXaQnW8&vq&S!F%!M5b$tmFsec zp45Bq(1E&D`Gu*u66Fv`E$smqUBO5I&9kOpen~^G1FbYL$I7)9N=kT0HyVpv^==aS z7KLMIEUV0($G2wr1wN6-C#z_KBXm`6+zM3?uIdbaDR)m-430fyFdqDU8!zsb^Tf)! z)MGC1gH|riZ4o!i)A++$_f!;JP_{~!y%-*%0z~|BA=&d20c@{tLW)Mbz%?=;t0C3t zfuh>iee(Dg=lVClbtEf&KAZwxI5u+Q+}Od$Aenz7omxH%CDvshT$L0iDyVj8K|Ln% zJ%N?8t4n9T8epjdWw{CyQxg+qz@1K=dYTJ-rD~n|mVRD8?DI8#%4u~QzNfMNGePOT z(~m4@W@y~)i`j_}%V)~55l++DY4xNi%vvO7&$B1;qU{}yJ?l++lY|Pbh7D$iZ<8+k zF1#gub{=vZ1k$l9cn&wK>+8-Qa!gJ8IF`eswl>UFhrpu-80V}gOLZP%JQBad!#8M zG5_1Hc%9@zVm2kM?~{t)f7}e@>#4n5n=Gcafkz~bIKa7cqc-VPd+N6c9ZqOshIRg^ zk<5=Afe2~JwJECAj+YIi9vn?c?LYQpJ7O*RDUQAENhcjs^;=1A`I6DeS=s$zBccd9 zegxY1QL|C7SPUFM$aRZBK}*)7>wP4RuMoDdE~~o+u=%yH+S=DZxvQ%;g)Itx*a(_Q zb|P;cPWqkPS~mxF&Lc-)_H4P51XcY5MMq$=06`>$dFZ?Z)O4wC!2g@6YBOSCAtn91_-?M&6fLTzgzZ zh^GRKT0dlWw#;XC$P+EIuP42@{k@GM-sZHbFW)rB$i226<6*G1?qClv)XB{(Tijp_ zxC*s}`OVkiK-HRYdQR!LwlU+X{MGHO!e@yhGaSF$9yb(dUCn z{G@p`0*GJ6hPET%e=Ux(4qigv^zGFAuJTj=qLNYA;rt(z6CrcF)y7@k9Q+pz)B~Nb zCU4J$Z3m|uaF2L8BBZ%nso$$Fq0eWAoDvbl_!(0746yTFgX~wfT`?4H&6+3BrRkl| zBjgV>OtyR_1H;3SP;wzZUZ{I6julUi4qIc;4W5RHR$Moi zm;qPb`rydN>powc@=3WL89ZDC>A+)#QH1(^l|^FraEEIXk&v~IXAcsCWYDfUHCNpi zpJv+ij-3(qA%E|?`9#W@kl>kBLvvxTk_NvqQQOVB42Bzjdr9;Ko~?qYwrup%FXauG z8h|0mZ(I&9Qezxe#*ji|{_ku8mGs!Erx_c2hEZKf5BQ!XxBCo(wSkR&{Hi+o_Y+g! zY#Y*xOCf4Tv+&P+k!So}Qx%nf!*R#P_?w>~n{Yi~eGO4{2is35tf+^@z)8d;z2bpxJY(@*7S zlRN2Q_zJObSwBfcsn%qWKhr#q>p}4dAFNHiH(ZBw1i!!#oKhYiPAot6IeS_{^6*UZ z_5Z9V&;?OMUK&3sF=jhSVPcQf1Cha$FXnFaZ*BB{4lI3Q;M7wQnY*7!$O_eNBt>Yp z$^ZE&l`8jCqTpHCKacK#kl(4P7l|(Im6+t*gheHvrfp_fsW@*>)#Lez0S96|NIS{AMj~`y zWWu}eT;>BHE-q4u!Do1d!G3J#-v{5_E<7h?iU^>E&k%~kK7JKG<71TkB|zeE^5$+M z$w|qLvbIVDZv{1L+8`XN9~ljFcYiru_af&9nhqQ&-!BrmL4bEebf z*vOrr?EZP$ZnE>NC2g=)?xari=#D6_`DCNYb6inF^NEH1^}WX-ojf>x7Z2QC@U}f9 zIQl>W#DXdROu6{0@P&nY&NA~L(fTQm-yiVNbZ=KR(mfWb!I6e^QzUJBC@>_qjIkBmSx1^&*mR{w1*#|PC*XUbpUUS#<*(Uz(N4@>&#*CDg{$X!fUTcI3 z^7;I2B$vmR?0Z!fbt(hNzI=AkZVa&FN`vU@PUS1#W(49wB14gYGSb}s(@%=*fRU)- z`hv{D0Ih1!C-jOyG&yG0a-i5`uIeFcMlm!e@A~z?Rsg@5b(_uIu58NJRKCSf({+y7 z$muDxGr- zq1p8nH_`|RQt-IO==y6775_)1lYl7iyeWd=YASc$9t}kRJ$ck^)ip9Odha+YsUnvZ z4S_@Qb|7>NH!N`$;;+_q`Tl{e+ttD^DbEkrL{1vP+Yo#X?Rqn4c9$?x@TiC%)&^7z z!&G92>4u_&)H5#Xuy~Up<-=l&J7pR_C4StDJ|@{#TSx``F=J+`ZE$Di@k7|=+cJi_ zDvJ89x|In%>W0jqythvoVfSP|zWuLnu@@k7LRd^-W2VGLIqp-Z1bNG-^=&q}*pv>k3MtzCF=USn+w}QGA5sgwF3rJ57#&*=6 z#qGa_T~puTE;J>{A3<|AI!Hsl?YTs#R1S+UcG>!OPL+;=m|B(;XR%q)MtCJgNyepA zJD`bUd;SfqT`Qw-tuF@uEYg+e%MHp_-Q~jGTpgjStcE)`_YS*l&@uPI`tio*Z~-IO z4)~$S9-;`Og|TBn+;^kz{s9d4E}GE+0pT?XzjpqPaZLv%Pz)9 z{~6@T(*jc=9r}Rl0>S^T9{T&y2C&ZY5VZpsOD*Ephd4B|0qSB%uYFn&$9%_RulWMD zIM229j*5Uw;Gt`l?TX(=5tHOYjSkK(vy430yw6$M4xNkPK>6P+BE$df*{+Y~XVxU| z-!#<`{O?8R4?S)!-pbYtF~7=z#PXF6k!)HRb{_!+Ln#i~Clzwr?H|4us5S!K`KUKS z6NtTdFL|0syygNh_N>Qd1ytt8-jQJu68tG%syzOlcueTL7FiS*t*w6(@Y#$Zd~`jP%3S@=*6~BZgY!4)AN;r}D4(p^NwR`> zw66)iv^qmyWaLJ=?a{eBRn^(ksD6HMx;#5tl{cc3)jm_4IeX{Y{UV5A`L$rHb6@V? z$!vF@kybxcdk8ghb(JsC9>Q(!XSsQquM>TwI?SzfNY3u`y)Z(vJiA%yNKx50ii@Tc zJ|uu}I-*?a`lX<&2YnM|>h#v;^WMpE{T8X6HmZiutwy7T5Oehi>(vsjIS1_z;;(uT8@BzvacNDo@lOXzDk=gFZxN3dRMSlLjrv4S^DHQpzLNMod`=lz z(&1)(^&7FlXNZkxTq746xjJNOboeZ-jmp~D#M#(4IAN65>>D{v`4PhmP!H?Re;@I0 z4_r(iH-{xc?j{~Q139#r{r`f`iFF8_R9soX%rA`2s+@65$2=ZUaie=7hd{RTO*f)U zh|7mn03CSyssaxl8AuELy?KIdJdEKbq6l8Y{ncL^j$t77@n#Bg(3a%YtUEb{_-jIYZ7V?}KW@&lKb zgG%o9r5J^Nnct3XQIEi|3Fjiy%MWQYe(_EfWm~mLF924rKNA!dx%DUdf*4*oz8`HL zTwI4aK~*+CsmSld({@mH+0=cdR{m@~XdlDtkj zLU8R_5H%#}3JeXM4ObJI>AlhIqRP52>dciz4d&>V&=uiEul-J4~jwx z6-FQOq=_YWKn|U<@+Y4xrzPRI0r>SsMm=Qqp%MF+!&KqbQc@_Qiep9^kd&w5($UljRk59x%we5n;~FuF zDDZqwgwd-Ak<+Jqj#LW>gxJ{L3$T#1PkP)RlGT7I%P7b~aj>J9nM&CsR*jOB`|&J9 zab1ZbJx<&ZRCDc}_N-u_NR(%^Ws2{Msu zU2X+)AIMT`Rx(_N;p>f4GO>VG^y1gp@H?pGnn;F@)m|RyUvmklEm&7mA8g)r`(@#a zOo`FE@e*UgmE@Pnp*{CvQO$r*=a&h!!y7)dw_H;hzf5TI2>1yx=j^re?Lb zYG0!-#hwdJ8L6E#Q8`syBmL}| z(%tsW>^}J28-7hyG@w_q`ldU)?NW~Luvo(rbGLPC&pll{jWn= z?`9J8yFL|=4(bSol{`sN|DxCH+T@-Wvth723$rc>_k)_QQ1GP2NC{j?0ey`RnjPNL zig~AAI;(K3Jzm_&eCp8oDIEjv75%A6nV-hs=T6g+1a4)|Iyb2KbC>fgz&A7nYmG}A zU@mRvg-*|AQX33>tK@seR)fTjIkvw7NA=0Qh|thCO1U0~2(M%^^{fhlGzN5`P1GoB zXo*dU;9{YZ19BP(DI$<9BHTJQNR%r2^Nq{FdB>z(I zMca#`kto*BuDt@s8TX0n9MD z*Y!lkJ7F`?u6*~Mq`r4ZJT@nDlRAe?HCFRv+UFqI{I^^?WB(RbE){a8?6Ao ze`0db+GCryn-;5TI!-{lq4i76?QLPSNZc9}O{E)0YY|UHnI6G(XFc5+I;V`m9l-gn zxEzwvlU-T_f%s5`4G$hE2FBquP%)9Gew#~UI(zM=L(+mML>=Ppntu5|xxvMUD5Zg` zlbuzGQ18a9>hJoJ?fb5Rf566A;!IGk{SJ8+@!(0-54%zuw33a(u(Ib|)Ak%{WF%rP z!0UlL8c+UtnOGmN>c;JGc=1kIns{6{-0t7re+v091`j?tZgw2mDmtIN&1Q z2|sT?JggUgs^xF)`3|eo{Y*aCsRqzQE!X|K8p`x}(b}IWh)SG|Sw=)KiX02L)40%@800B;`D$2*w-Hy>1J(!pARARFHXxlYx})F_~4D=^H$Jdmzu2AJvXsZ zr=g&YoJ<0hhhUQWA7?J~W}a+Pyk52xHe?WXKHR&cL((u1O^y!2K%y3+#{IO5NWbNglAV8Bvk%W$aW)XY6imWU_>X7>CM=nh;pNQv<|m{#QO3r zFZ2f4SN>lUI1u@38NyY#pK7hVm5O!W&HL2n+$K@Pz50U8c%f%bm7~0i z$XU8o7^_1`k(@nDmxK+Qs$E4+cxk`bn^)dNn&_K&TIwsxolf+2VDsH8`Rl}ay2%sr zbg91mtJl!yt@~@B&5>Ae}_4&e~q!CN7Zv^ z#m%xpx7`~CAcWC8;yPe~nMqjlPs&59-1DIp$WJSpT~5o-o|%!4)}UPYgzjwMpUB*b zWQK&}!gw?Yqm!Q7qyoZbIW$M#oO7)L9SeTDxa=;5NO%FDidjXFHYq4$>)N}8EBNP z_4fKsvtfDUtZxxE!lTjNO&h%(``cJYjZN+8(6mr~<2~cOmH4#zSJ&kq50eXt`Wv4e zKzn;K+e|+0Q*&Gw4u^y>y#~5K%)V~g`2q!rxB z#uvT4oyR^hR{!JdvRn`H`~$D*l)U2c(rPBI?bRN`KzbldAH<9Fiox=AVB5y{S%=V9 ztWrsHTSxS{vlBz)AqcH$FSTO({r%)t^=n9(B7Nn^|4Q@T<+ccmV65Kxl8FHbIC~^= z_h-*zu3s6Pxi}wd{$#}K)35wAVcj@QdXs(At75&~a^>``%&h4qnmklho4Y6bz`9%; z;!HKfIyYlKKLTcC+=4;%bnf~ly_3uT^s@JP8|B~Nw~#rc9ncw%z~K8Kl-;-VVGLs) zkF42^Ep`P0&~cJ2!FLqaM@b#8ghf^hIA6qf>7f3o3B=E_sK z*0^eNNl@;B-S0b6)i>Wf>wN%h{2-|3II4GeUGdQ0;Vc^rYgSv?OE!AqMN3f|$c-4Xi_*#*w}2AH z2QCh@u4P`fPkPX5|5a{Mq7*IB}iJ z11ML$iw(JtZZE8y{`EpgE`aYIJCTTX%PFN~JZO~B8nB{^)9@HL8nYQ@ar#xc4O$s@ z*{aAb@rn6rNbJU(b>oH7=na#HgKJRX`EBMd0KaE7P4%$SESUHOethM9Z=D}3MNWA| z7jo}FnrDN&^Yuncb5-+=L~MjSB8-k%U#n{4m{id9Zs&7luOa|{4B~HCKS^i#*E2+8 zK)JRb8r1!~O?p&+^+2bv$Ys%)_Lm1B?fFqv?FV8$_i1Z^4H7JCNu-i$64fL(2)BDu zX&_9wxHy}fX~l4clA1Fz^DJI&7IGqw#4!Ww&06{a&q%MY&THL2v|lxt_gr5i=cJ&q z_0zqf0vkqN7C2_U#6#q3N2y)+vaLvR+wG*%t`UPCgh9sn%`-?Is9#BC-{Q`=p$GJj z%USiWTERBQ6S5-;{7AGbFOHIT4XaPy7@YFaLhJpKUdbpNYPJ}G#&(&9KKhRPo&kOc zwl8%HfzFW&oz>Ew*cj1>s@L+8uoj{0W|0S*l<}eT`iwD3*wkD7J5*|w&gst**FSR# zKb{pKDt;B%rGxv*uc_%+p~8x3ja1$mNL4166u}NnP7i*dZScY6wR5}@Lv5o5Y41V? za-!iHet)BY%OLmfgPy$mFGlalK*m~}kDWL*piNkS-aL^x6TEo+zd+7a@6rwx#D{eo z`+7VUlE1a}_1A+O_cFy}rck*$)>*om%l`z_sIa%?E<>)+@|~lT8=gyVN#pYoE)&ww z(m+Bg;9DR!Y-8oaVc@jZ_4Wdp&h}1NM;b{l$a0I7_ejYZJO@QWzFC{k^~}Mo_jNtzSj$2X2w?Ug-*7e_)&y)wVB!pQ7afknp zqVsS|x_$ew&y!_)Sf=JI_b&IgL1OD-nUf& zoBD1rY`aDx2xOgKQ&A4h7Wx&TWp4s(2PjiQ)e9;)HXA7Ukz6f5kH6)*<^SC(`uo0_ z;gRhtk*Rj)UgD(D^t0R7MY zbgi(Va*E6;+YH2Dxs8sF1Zj`43of55kY1(a*{i2cP;PmQH@m?)H}6>*-}lz-ROdS_ zuK3$PHu!^iv{O)RNVrNzrX9jEJT@HGy^Nfzj?xLXpGj60jNx7IuEdPcSV>K}W#C52 zIo;Qj<6m`#XY%n+bK1l0mb(APXDFPq;Q#T2TG7?vV`uMNK9%HGUfooF$Aa15Qd!(I zPIGAjFH|WFR{|3$<{XTDMTP>8cYpiTgDwzIUCVZ!M_F6qgu&R7f0>?x4F(f7@&^r; zpDlCkC5rn?uUht$n~d4Q2Yw{{YxFNb^2e8oFW&+}^P_M+!pP~RJ*1s=8D<%B-0MbY zVoNo2{j;Kly<+01#fd@ z((a#L*7y1r_HP5wH3jl6qxdz>){ShL(_h1;A09EO*zxdt{?cGFX!Bvc^NjZdi-X6Z zSPDPe0XZf*K9=?0$Zx-|72B*?oiI?Y3VLSO)e+px>4U-I)J&rH+fC)9AD#J zN4xP5JD*F;1EYA5U*JTnjKdJtCv#-nnksWnw)mv?D@{$I45N^5i_Z#%sc*|qh5~I= z>d;$o72P@y;9{A_YhTHX1^EeKU3~gN`f!}ta0<*}1kd}RM*i3QYJ<*@%M$|Cqy%qW zdbsmmMcT;rxL1lzm?H)VFfdT}U(O%iiQaHQH`MuQFATreOmYlHnMh>a#gp+I_U+Nt zn%EpAb*%5#%!%7=;;Yu;Ro!&t=J)TCl)uJT-dB(tT`gQtr8#bMXmaUZ#6n^u+It!! ztR|QP{ePjVNwUlEa1k+6E<@&Xl!rk`)z0206RiZhaS6L4Iyt2~(>Sp*f0hY(oVob7 zQe^?k5vs=dR&OqC5s1X1coof_aoKCXsKS|}M`e8bCKSb0%B5FY5(KJ49lmU%^GC`l z5fC>ddp7=CnJ23u%FPA1>$)AmDeeA7vU`^~W1jbOCjxp!Ec=Rqpytxv?e@MGr<2Q| zyR#zNPA&S2!jZ(~O_V1%9@1fVp{G8|QU_foSHNlaDY4+cCwm=}io@+8YL6$mYil&>ej*ys4gebR9_?%pE|zXi%#S?08gTg) z3}WK_F1-8pwQsK2$;X9@$J4BOz*c7Ds|4bcyx~}2UK-j4qzo@DIRpd{=)F;6))MxR zTiQ4nK%Y~cTo$`Q_e>=nUd!>m2JB~K7jwZqEq2yyX|$9Big`x zQOs;6&=XB`S>lpMPwGVBXB~(P;0PVNHD5VjUqIjHiD>_LuZ_E#YbyxfOJb`W?;>UJ zCCokrp-mQTtz7lFKDLi1Ng-aQ_`tIRGd~2bYN9EbDSwzv`Me;W?bky*c`T$>_g? z#Qe@*^Qz5g(S8Cj4VX?yDpPL>>#lzWXTqZ*3DZXB9}`{R(2 zW^b3nP_mwcI8X@m=@+k1&Y6nC)9cp)*#eI!&;LE){9W$GhwIma=?0~fOBlG6GqIS^ z-wCuwDCy>TQX(o{_Vz}j;CMV|^LFak9Z^kE4Eu&^7hjjkg~KYTU?Q_LH0WJj!8=Ty z-9B&M7p7g3MS&BU{dkI*;4~?T!yk-zP_~LRBkvn@IW$LsOGiCsbM<^=4t4#&&n0 z#6T5Mi^}aZQtU2-vMBE>?x`-wjh%SU!jC9` zEG?@Nf@j*8dZtW=K+*-llnL23GLP%vTwGa$e7Mo zA+1^OQ^bPXZU1T4O2Grw0wy^#BjY(AyP(y!5i`6SNyJ|yW$W8Jr3+-HR2_*Ra#_lV zPmizXb~(5Gm_MQ1nq>oVg;%mGJ>O5Cm}6{LZGzbQCTj7vROBbWqdy=X9uTUcb;8?A zN1wMR{`ar~r`#c;zng*&fwtdBd>2d(`Rl!j1R-4(*^RB{I!aw|21;dogoG#YTzrVu zmD{et*D{eI4{FcrQ~48aPyNTCPCMb{)7>i7bm@VV`0vVUDwW#I%|k5n@C0z};FMxY z)Z-hvoPiJgg&X|^$ESErgn-ZObdv1?OUxsFBzG*kzr=eOPZ~VT;`|i~9P?~%T6ii4 zzGzO4&J(=Q@lS0*^tm4ul2hPDlF3CvLF`Cjs$jz=4FcJnpT+H)bzOFHRUr+t!F$}Aw%c8p#-0A%SbWDNXB~Q`M}?Lw+xWCcGAq75|-B{&U9OJ~&I$X0(yCOMY@7m8SJFE?j;>(G~B9 z$ZtsQ6`mA$#X(5z-TFj+vn;ay^JRLO`0SCtAM~mXeZQ7J$0=6Zg^z~K&(7jDKVik; z$EoFOy`FYafjlo*yv8-?CQHR>9g{dNrEylc+jqir<$Gw}?r))4nUS<&hy0>xI;+VC zZiI~?LlIcRw|J2SGDUD?K875h+AClD=nTHM^#=33s)5(ZY|%G;5f25=*(ZheA0vs& z&xlaT{&=2li95YJ7rOrAMhHM2=Z)SZrX4m;ei3vGK=QgW0NEc_vQsMeUJTtLzqFPty0d21 zVCoRH=w@-kys{(LVmSvns?GH+*s8sVICz4?jua5-h{`{D{pkHsHQ|ejSMS7EphJSd zM}qW?Lt?KR-k*|?F>$1uSH+qsY~yqyDpQjEb4L$&K*<)go~OBDj+52oFU_`=^s8o} z{I8iq@3YE;kk73n)Cf>lXdF9kdD?@Qy0xIkVL9xLgP?Fw0dywyWpAzOBem*dK6S|8 zj_fNE-zz1pC#=5jF7g+PU}bZ+GyD5@*>{wai7NHxCG|cHfz>>B`KF5(r*!CQU7|`o zPktq2Z6U2`ej1nZ`+VG!(6pP{m@X#NIvoyIBdl?l%U{fU&6V`mu~j+mc(0_<2E^A_~RmMrb@|RxS6AePj{~ZRJ%HzZW9Pw z^jX7`7mq|H+>xB|OVt0i?&8od!pAxLO+X<}h~F=1^OJqzTyB;%ln#gE8yB}4_CRnB zTmwtDEVDd_4#_EdgII=m?|J55x*HYwQPevqE^fryPM2Z6M z`k4R+GY3g2RBI3$wTz$Zk@^d`>FYY_lTDRI`=dV=evt9D=mBxnqf>5xQ7YIgX?tuN z?;KJMYBWlm$58<+@`DlKD#3mEPdqp zVta5(;-z}ZjLO=mD>63oU>C;dW#(RRvu0(ujnkW)OPf~M0fNO4ja* z$~x-xrJNmByHc~v?}v0sO}h9K4s(wFG#?R&~U%OuUq4~aG2neC6TTssr(v?FgcBk#32-X(# z2yf0P48L8ER|leggT-Op|UTxlq2nxCWJ#jr~73T=tlyTr@jZ*ihx_Gzcf-PF-#;V3STQ&&ekdydl z>w{gUL+v2v$*y_|gBzGJ{daUSSqegaevhW!$dCkhWyf?H{}pBS01*Ei*W3NKST)i_ zWh7ErD>12P8e4-;AMEwCk>DW5Q+BnzUcER-Yi|fYd1=PJ9ZFRGIkK=(%+-N|?Q0+d zb8!*}n3(%nr{Lklmj5hd{1Fe_0Yt9%J=2&Q)82&f=g$)V6xhE`+b-@`Vb`qD0u^Q| z$N!|aPksg%n?ycVbnC+^+EQ68fQ^Mc3XBT-xvi$x8XfVLw-wp(nXy0|sKa30LJfS6 z1i$_8;l5SX&BJ+7lb1nV8J~x@JbHhegMR+JU2Es81g!wE_BUVpkCZHgwucLi{kO~+ z8HwHYh}VpNY3PE({>@bBKeum^9X8vbh8=_YXJu|BDCrq*AFnRebap4q$WE`f*_vXM zo#ambYU5l|v$0w00?kY4P?qquYd@<9LY0qY4E2>zram0Zxwz}KtkMlPJ-F)ohL}h3 zrEdOP7yOAX>A$SSl_LBfU$Au*69l_gEj;ebxb8@GkL7x%x3q_rE4XMnB=7iCrc}?D z1?t4=a_hJBD>9~RPo^jRH{>)0GwJ}Cud4(ec+9?GM=C%9&l?;L3~O73N8TGz)%cXs zCG8bF-Ir|OOU{BqR-p-_*^0|c6SZ<1i1wD`L# z^fq3tx({qj+~q6uMMY z_k6pUHCo4xD}2U$-81J^iZP^>>1fnpPq60dD4V3=(aq(<*MXNK_3qSq54uSh?k=fD z2s<8c73?W94Ny5VkZJsH(k+Rjk=^IsR+^1_l(>9NM6AAtFKsOnW8a5A4$AlxU~}8S z256Vr%S7oE6Z#HgpX|V3fPEl+n;5-ZrcBbd+d}#aMauLMjWlPwuYRbuxY=Rsvh2}z z`(%a;maa=&gl-HUp6i>{e!MD9Lq{hA=hr-R2P!*kVzBg{xqZ>!CydQXAgy>W#nCq+9$oiHdIK}wE{oF-leRQ$4)%_)IMpVSuZL; zdxd{cZ+dr1LN+an7boSg$zZ0}&z8a5gxLTG8wL41@y1z79TR1=fFx-oXp<#;XI)=e zce`?BtT03vA#MEb{rH(@Jpuc9HE@L))f0SloqJBR0Ed_wdw6NFZ(({glX{4i$OsCX zaN|vlLjd~gp%#Gn@JbD5KVtU6b!aLYzvC=D_SGPD|L1pIr_-0)_k+Mei9&3|!1*R!+BenUFHe4d zh>&*a>;O*XF&GFgs*?2t5A*!NO8NG~NWY{QnX}&bRxN&FZ)|C)D%1Q;74hHeNld-- zeWI3~PKwify6@2$Q$vZ(WQ9LVh2{rQCMh2~;NDsArZa}oak>!SRPiKchnZU}{`sn!wwVDP`2b4ZfU zhaCN(=OIZSANQ1exMf^=>^JLHv&fWCuM3jGaDkVQ=jlG%J0{g(w~ZMlF8%OWm)xDe zuj~h-s`ecs?wSX^zi#V)=U=&z(wmxxN}R~U$#Y5cc(UE!SkBMIGKq_n4Z;=?7yma< zhCHy5@ecwb>SLz#a0#0?9aDcJwNLM~czCrTUSbDCkVeEL8A=J^DvRxbDk-rB<#dg?< zJBX}R>6-<6stO>FnAs<7^aVd4iY?&RJv_4Z&!&6GJvu4t7c>@U*|ODlz3I9PZT(OE zG*=-4uE)gL&1dA|iF9+=MuhH@pV~g6nR*5)YiSSCSvOh4bb9JDrcho!o42ijNv*n^ zIiQE%-C~X~mi!Rp%-zXBl!4ms3ulM}HfO1tR?xnJ6}!}xa4Blwh;^!pCe~44Zh2%9ngy;mSytrKCu^SQRUzVZn@=x zQ0ITk_p}3L+s?T-IY2r>iNWr(LP^jrJG7hL$RHZMKhD;pmDm0GBqb$CRPWaHfZ#g zzg4XMqjYP(=t0Xj0q&2B`ux=)Fy+)j*?}3$dy>O@%yl^|X&C z^X(;(smD$TKXFBo1q-WwkA{NK@#=FnZfo2FByWtUl}0*<)^HT`@47}5dw;9of#h_a z;+Dw#+)>Z!S2o}XT%bA+W44h*&NVZ6VAXu*!t=b}XPYA>4Ab-Wg25IsO(#R30UXNa zCVO|x2BOV9h;I>pRqWrjhjx)w2-sh&&j_xs-?0wO-9mH8UfQ3IiG*Gp2Nu{bhOY(Vj zEH3Ztxd1XbK5dx0&AXk1YuS_6QMz0N^M8El|KrnFsCnRd(E#4C#P=+Hj3999FiHpr z$G|j9;=4C?&QElsSj;lqPHg|r{}%I0y!_16uOIg?5tA_?Pnp!ZDbVmF_U^u6gw_&| z_~sdrEigLV==1i$!@S^3>f-z}w)p0yoty=F?=#D;kiR!?oeudm6)64EzJM1)mfVN- zV5>=REceg<_@w6DzzNLY`pJCwXIeZ2d}MP{4DQCYiQuqdIQd^`#L8jb z+pNU@ZdQfyxTU{+TD;%v^z%QxZgipJo^zS^R`jSFJ)XWVMo#*?BHufz9@A1cb@JF) zCg0hDoeqOuhja=St}%<^QOgjP*WyvISVMR?&W?6R?ss->Kqph=Lv&henzguB0FFma zPAUY}4HM{g^SEB<02KL{W@qCFSKB7wuy{O?ZQJ(d(Sv8rezBO-6;EqYB9D?KwHE9Q z+7xiM<;)_Yr{`bz`JpGQEOTU5%Qzi0z?;48Xje9X91Y(3`qK=?{_X53C<~hEs z=~h^ck}xKC5uW8kNqSc)kftHuH=_pb?d?w&G)2{{b>ly-J$UtK?BTEl08npPXstrU zS>r3M3GW<*&j`L4GRrnsVB2^s@6J<}tEFGwf8jJXAZ_~SNgC_l=V`+FVqa6nLIKoG z7^uc&{jjT57^I zWI5PFA*JKp&Sf@%l})@^E(Vrwr*$dpjzH!(y!i?7qut3jO*c5{->Ka1dRL+q;-eP^ z=6zVqWkPqn>I`VSb_S1+00o-+h=rPx_A@(Vj8vaxGlSHDZ`K~9>H9iZ{N!t%njfM& zK-5;S(eS~o;YH?1hinyBo;FODi$Dcp$;ged{_N~@eqp}z72rV0rz-*`O+Rwj)(YVR zh~Xxx#y~d3!6Vw!+Q1P24CCY)kke#AEC+yDm&iPBU>1@U`-friXxdJ7;ypXO7(ae!6n?=_oH zvANJ%l!htc2$p6^C(#;TTUJE6&1ml^0)EG%zqWSu6!Q&+Tu-cNtgZi6WA6Hp znBJEuYJL97-Q=35+g-DKIh&I?N$ykn?I_(e8(1x?vG3qX)LB5ih1R^t2v;#-aH@X9w*}O{4_`W1T%J@?0`t3@*FvGz9UQ<2^{wduZ3yZ+z<7Vd%!mo2# zLq7;xi>g@p`D|Aw%GbY7VsQOG(`tp|XgOa=>EaY-~N9pxz+j zoBpfWXZvLWL_kszaU$LY7E4~nM|e_0pXzs6v0w*0uB@VwSvfvpP{HY{-XYAm;Okf# ze_`UJn_otisi)dh&6&b}s;%O$RBs+?Oevc@n=*pb8)?&)Hh@f(I25?jK(GdA9~{7C z$0Ko&Xp>E2qT|SBHg1sNU0+XpWxuy~>fOijp;sCt*OL{Tw|q*M4Ad4%lC~W&fIImi z%1H#`gd#R7cG)j1A6o>E;t_21ga1;$De^k*c3Ib+?zce(E|>FnbXv$Q~qHJb||yk_@Q`AAu0gQ;-#t#yMZth7WV7&+QFFG-y==wXEPUttH_ zy0!;a%2xYCS{Ja)xp(C0sFQP_!P1$ix+fK`-y9q2ozs!fW%R~+9AP0k922=7(pLna zD#&Kw_6Jdm6>bMVA}y!*;{-Bkc0&`i|LTScF59Ss3pc*XOaR;8X5|LmzlVM49&%l= z)ralokZ%U*4{0Cp=@zd=So0s+AQ5J9I?S7Vo0u19%b*B_U(V~ zd>Vugc1>QCt$_|e-X81my{z$ayszOa!$lLgjKHt6ozSOmhf5hk<@CfLZ0G4F;rh)} zV&WDT_GF7?$1t{<5XTuf6I{7i&G77#X4$d>WdB-V37VcjlP21EjfjIn;uUD+vcA1%8>y*;8NHVo2*ZQS=>-BL+ znrDud7Uco}a&Z(KcAL_;DCU5(t%w_F>tb|?m1dSJz*Nd8obovW;7r?dxr&|7d@5;9 z88Sw1c5eAfJp0~%1QXn~8j)U?zDf7S`3*qIC`31jpMd5zm6By5vzS6$Bkyguyl+0d zSeFU+39F36zrD4tUYsCq(&m6#K{#qlfS-Lr^N z>r=06Mz(^T3sQKL<+J>oU=V|k_>vp`r z8SE2qU?2c*%TYs(MvLz!6G=9EeN^&}8Xifrr8p}Hx&OST8f6`HI)d)6fw z!)xTRgPab#lLIYJYO=nq?feVyosJy~65u%;A{2mUcxM%=UN)_9BoQ7C4qJ-a#yafx zT`%)3zQjZqdcfgxcn`~S@QF9t*6;T6<<0AJ9gvyuLF>>EzbDf7EheRZolw61&ylB5 zCJxmL7Rs2ZD*@g9m8QIPStPk>I=JK96?H^jMjkT+KP%5JLo+;IJ0cb>hN{$r7#CGR zr}p}FK9)R8LZ6b>_od!<(lwYh5K5~&0ifl@R0QDo{3f zYiGk)tldNK%ZM8)WRWj|dF^0IbXw>|`Fq5lL)G)F#gUfB3a3mwmD#JcY!q`E_j7gi zfxok@QFP#VHw=o%+_zKy_EQ-6lB3PibV{KIWG{!{uF7)#x2s3^!bYk3v&SgMheOjc z7Cdv7yYU2M#J<#@sG3imc}j!GloSURhVF#M;+u}-qpT}C0aj(N)FUb?Z~n2(O}Q9W z(D4E0tk}$0MI72$mTqsmHQ9h5XX5}iP*FMTQhjukT&&@)_#f|K*4Ky3 z;ju@o7X2rd{XLP05|Fv!;r@Svq+zhRPetvp>Bv{~J(I~25(@&GiI|U9)BEaLx0Rxn z$>Gnvq?mgDgp0G3ws-txK)?IvBN8^IFmj{MBFboUezElM-g`gq9Z#?aqf#wiW6fZX zsRetBxG#)u!2c>k+Jg1Xu8S@{dp}?2srO@RnC-(Gc#g2&CQVM_NbK-nl}Xjru>N7ayRScO=<2mc>;sFqyS0;A0lbn&r(Vd{VYp9Sn&xJAN43U-sj6 z^`n!ufti;cvs{O(im}z7#PGcesEB~WQX~a-DYGhFaAt^9l$PDE4=*wJt{}a+57i0F znm~El)a}3zEqxu`N>tVz-5b*ELy=i3HY(NLlX!g2B4z^~E${=YyUfDMNj(}i&T=iH z`D8wrelh(Lz<-q`BNeH&%^9pM{LYn6ccBml2g;W%k`?63S{`#dHRxqN7aWn0&NNz;R&9{y|FI(96>>gC(V$b?HD zzD+i|;J&m@7Qfm;d+|?~8I-1H&O`k7_Lp{#XDJ6jD8f4s7uDc z8xB=hw_juaCWXhwb+PRX+jqFtgCjG6-nQ0;fb-6I>Ek{XO}$Q1v@S%; zorJe{6LNS=(+WE~H9M(uiIw8_R_z^vGx8R1=UYPCcX{1R-Fegk8t>Oae~ShGMPpM6 z!x3Bjt?gl{(pgZ)j4>hW>NsZw0f9kMAlI!I?pyCLY*H9csl;xZ*|ao}qBK9RIt3i~ zjnBNqxTO#4XqQZ9<}^BE2|VRz#5VGlo|TAoPgR=?7;z)}tS$Ezt;|EqIU*bt#Vp!f z+CDHeODi~cCh^boyLV;bHtJB)?!tdn4E&~bY#&MGSIIM3O_k@8F|9s9y-$N*dJPqv zHR!;&EtY|Jpv`U`v$*!p!lM9-s{e`=@n#8twl=+DGO-`ukkA)Z=IZ==trh;#sG;SW z`0s>oqXpN`+8M7~u+2;xL8oo5gyrj9X;_BpW<*6v<`}Vau^gW@?Q6bD>(WWfDs>?@ z=s&#*A8~nP%|r2-&qbK!?)<=>;ry-jCfr19$;Fzk+wBqjQVpk`JsYqt*x}H{2Wxoa z@;STO2KCvZ!sZ^{ns(ZIxEix8J-i$iQ>!KH2h|PqlIn?n{p{&K{7K<`Cb!_G%Lk^> zF>Gubcsp4(OZok^EM=a4bwG^k zP+IxsWpHT{&@Rif+01V3EAwx>^WgH`%5req#cKY*H}q<&u^_F^X~B5)Z$n8-^%8q* zke^>TadTu3Y8$rcEI5y?Yph_IN#-mBb{Ds=b_XAw`9i$ubFxN76S2q4GE+3A@HI;$ z`&PJ?OsNpzId*?`4yZ)K4eRi8&JPg@+d{KPLPwqej8 zmpkrKW8;rwZE&`CWOAschwDT{Q)ZLq32#@+jHN38Fm(Og?y#|VlH_xV_hmXR_$@qP zoE>k8dyHV=;{|IO3kSlP`Tyg)PQWMfufeY+2&LFe->nppBTXwm>kln#FJ0`1$-%bP zcd(=@K*!ua8F@2dV8}b$q(Y=zp)d_ z<>p2EDME;J>#gC<#n{-mJ1;#zHK>xzZMF@4tZwsXP58Tyk8-vmOMPC{z2m>r@V|kt$%WPwxiV-#c5hBgD5)6hQ zWIrS?eKMT2n8~pNS&ke+Fj2H-(~Nf zzWkv6%&dhyvK(RAXV*~Lpp8z)aOWLS)a;-`sPr@ajHTw*{))gz2=d5)y4u) z-jQw8k((I|5z0sh@B)^2-ksdst86YS`fj7d5LYhoM!;L~HGpO_qJr;qnE{pWUu(h9 z=`H=<;iO^z+q(-@^%zuXJ|3U-8*V+S-<1#eMs>4K|ND5H2pl6ct%ubxW(yhnrZlE| zeWdzi);&2HJSpXZX3~Xv;4$c_@Rl1?{r*P~Q&#)Qm2DPR08`ggX3I|Qard*|)3GN3 z;d^(Pf0`movD0<*JH5t!QDu>4uDLb<{2Av5!Z{Au)5kwvy&H5o^Tu^ig=)iSxNS(@ zr5Q=<(m@*lHggNlHXk{3+j)ajFu1@J}liWRM{rInVALRT(pw`D-f{Of zEw8O#44}OJsl!6U+7U@uS;>M~#aOVU4d&$~<``viVi|W}*5_xLNp{ z&f8j<7LVTlKtHJXG82Cqy}`mRXN}W63Mkr#_;c*Fp$ws_}2|ItO-=W|d zHVp0Qr#Pz1oT)>B!JEUs{=|4;7k1Ay75>g;D(diceW6NsKD9y`Sw5BNbZ7(7c?Gpa zMgZ~3K>9n|UA+hvlUuW74qPo(?8>9G9xPjjVo3Ilxmb_+fb{576Y)}!uK_oW0Z|9# zTfYkt8JAN4@(ARAHVfqmcaR$b^7%0m%9&gC(?KIf;4(@egziDSmZ^(TvMyLF(`DL% z(kKiNfpT#mD%_GLd14ihd#ht}rT>TS<;!mPx)oeHZ~1I9qeg&F^-GtR1yy>Yo^RVg zXyWlo&8L%Ttxg#evaETcsM;3H&xbh2qAXoj*H6s&^s>xWNJb9hEZR&MNm1{P_1xiD zZsn}JZi_wATHNY}dog*~r+fayvUaSJ*H0O(^+IC{_+;v{F3$J+H@7Q0R}Es_&L$gj zoMzF*4)GKk>IsLvUuAdxQK+*1OOH~~5R^{OyaWDR6xnFBO)oxeZ6M}qInV6eLo@#j z{n-{IS~M=h65DyfP5J$gFhj^L^s0zyeq2SKeA-NU@PG-N=!`01?SVW0&O5!=YoW?= zg(cLmThHr_DGuQx!y-jn7)1HTvg{g!#Z{EGmG=fr5*g(wnB{e}C1v9=B?$e~yso(!z`+tf_`9eBlmiv}Ur5w6TseW~bu zGWYd}v3gpqw9O07qogV6wK(5Gfk!KUaaE5h>vBLCoss|X`HVB!o=vSR)*R?BJ zTnC1+3>Ic$F(L~EnKKc#TQskPy1&#i|Nrq_h`BRm6j=@Wv4tpb$%2K=B$o`p8EO+M z;%(X8$(^?|7eqi#HS_&Ptxu0ZeDURqY^Uu%(b%+gdRP#xXX^BiYI*VTmTYrJhnhMx zwirl{AVVTtOlwx&b55)Twq0>s*goW=O^mn>%~8v5f8N%*OMaN${iNr`c?cxYz$^Ke z&hN*Xd0k06Uhi^C=v)KO7EweRV2%V0heaRgN*Q)lv~`sp%OX19O<|@Hm$0(KLpia5 zfhMDUf72(oU*ch8j^_XP%vU)0nO_&?C-onpH>iY!Qk`UHSF44RgM{07ems>|=#Um*UQ$I#zgP#J7>Z23%v z>XOv97qMg$+mp_v!;+TH-^w_Y;&-K++wR(bQnE;yB(;9%^VZ$ek6m`@wZ85mRwVxL zt4@u=eCo@r8%ZF6uVvjZPdpdXbk3}xBc#;{aX@03hOZ5SVJ3!*8Lz1`7JpRQzeT<1 z*2?vluXnw2|LOUWk2|Tq_A9D1txP^UDRpF_Ra_NdB{&kAyBWZ3k?j z9KYpot`BamdfrrKNPVW3NFE53eKr4c>|JYK7xt>8$Njc9Ki6W~uL_HH9?7n>I00x6 zewVxxW#HttK-;T}4qsQ#=Kza7;>;^U!i#ws#~PJ9&BFt+Zxe zvO@2OwtX64%J`_)P*@d|mTWcJ+vv;nf#=|tvGKZLPI=|y0J%<_P%H?n0-GrsE_nTW zE7xTZp&?_V<*?5A)epPC!rqde-QM!K-T6^}%;@Yf^WewWlZhIP+r27H6FM*z09JL0 zMc&E(<+3oCQB>ZaW4Zy~n`_K^i5{umV)UvZ-d%1w8+SDz86GA4N@MEFw+5xaP{A&> zB6I1xH67XpcKTk?uYZ+1vOTV&A(l`kYRPP2gf#k-Aw)_^33{rM3E^O0pFXBrrkZ)B zsC2el*msibKNX8~*;w$0NuAk$^dHYVi973QBkQm;exJ7X3=#r4m&xM?i-mNQ+L)^% zB`aNULc(HteO#WCv{$_wH1Djr?<}MqASCCT>z+l}h8l5cHVAfD)Qwk>xJGIeEHbUm zXOgCVdvqt5V2vim)|~cE8|?^D8El9$_@v07qOA6))QEujQP=RM*!L#wK!m1)1AYn! z%N$RQu7ozB$jk5t?qjYyTbD^fGx$1d$}H-QZwlnM?j!&1OQ#KS5@yD}8CV0Cq>|;d z8E7RGH+I0`&_0!b-vv397GvZrV0FzH)%Q=vG-;pw>$Uk06h#jXte*))M@SI zKLCEX?1$ivP=G_oHpHr3i9O{Kn`0NB6>RvmEJ`^f7d`T}i(`^Iw}&X8Q<5tox0WC7 z`OpAmb#Dp!V>LawPp^8N*0t_`lxB)J(R=rIvHAmyHbw0Za}5%)7*4b5r78henk-4~ z#2P{_r!;3nEVLZcDrw!YHF&~V=0k1dzs|(BY{VV66KZI+(gZJszTov2Pt+|=oqcT}_CBi4 z$;%f5)sv-9#H;UNWc=G{M8VVxe2@dID>3a1x*)ANf7gC)1`c=W z7r%FYeS55-opQ)_QN19g7*P;=DPAP=Xoiz@VE%NUv;i)I5F&w$#O~Q zgHME=ccsOiUz(qfx{>9VlpMqyH|8`D#62HB=$=TtNWFIdcu z(krGznpUn=g)&({BIrUFkuT~Pb}4Eh8f%)w7%Pk(mwg$EU@{Yp7jr zEY8bK-oZyJFuQSc%X?X>PfGTbOrvfRIb0*3q z0qtXz*5TlVTzZkG`m|%1PZjeIV%yHVI%}_v{j;Z`mXJJ~sq$^+wSgzAV(AujjCb;f zc8H6Qe8|YpNVjF|&d;SadA9Zi+r!&q1|kTVHS6&s+!>3(--=OQ-fOPUSVvUeUa;UV zR1fNq(wu5?1Szt^Dwn0|^ym7}o}0EPqtE6VSc=%(27dpdOpy zkUX4^ufsK&$2WU^dWYD8E*#1(A9#W}P1F7j(P8FZ1y1sJ8CaRCS^(m*kjT~kn9Zfg zDeVQbXwyKu+I0>S%#F2Cv(e6@X!ylzfOg#1%y=c^K*Q~??@&yRYztE3ADSQP@t~l! z(yw32)BD{ifK6G@r#n&(C+f}ZtkvPjr4fo6JfsWQ!aRk{T{!LaCjW3oxowcUj_8b5|BC$G${9f0FL5{#!qp z9a8f@zJ5(meDC|*tF`QE;3B3G#-%V0bk;`6`U|sbb9A@{F6-tyP($)%9pVS`v+QwT z@+|P_!~IVnb*qgXa;oFf{mz3!<2%2*ytLb*gZ~LUEE$c4)vj^5#^Hf>G#KwYXPaEW#+oeCl z@)@lK_s65u&!f%TBUCm!jubpk*%)%*mJ8-0X#?EALOT^1Bgd@!1=jX3{s_C%<+6P> z{AtI7;v6TX$9Dn)=SuM~f-mWmDFa38nCwf6mt*ZLbOEE2Km{dq_w>lJgWFEp{gv-X+&B9TkLX~qS^=2eve$zylOvG``3TGO z-V|q3-x+sZwrbv^XZq5s@zoy#zEwN`-ly2YoC5%u3U@4cl}5yc{(b@%7rN&YP)NFO zo8%*kpts_}>OhQ+&z_`)y$QKb$hqmcn>*71vRXC}LUII5Vo?o^%-pVwhTo7*e(v z{G6GUP`BwqM-%-<7q~)^MmAaZ@FN49usebky@62iH_N~nUWW4zOyRVq?oMJ$QPQe5 zjM__!C?GlvFuQXM0X!i)Nc{JwqYeY_^{$0+b@PaD8YvA`8Gs!YcNY!wRlZ+9WcF5l^(OOFp%BQUl^My_B=JL5>42QXfj7kx7+F^;+1UG z?ZyI;*i!*hD0Lng(qs4T!J~tuM*Y8_iKZ9(po+g`dpa@BnuL76QulUo_nlP2sQR@V zXc;+RXXrP{vzjUsky$FOUcn;KVFm}U(lRCwrBGtz`R`^?i8-p|?H^y`X+ zAU$WE;b5aa@-9BEnm1R9k^Y-ivgn4{h%;GPMwidKrPim7hEb#}iAg#w=@;+Sz8V{t zeQUw`(-?oF*{SS!gB+Are)JLxh&Jt;*B`CinjdC6&TBUOKnK+B&YTQa>d$WGMYL5Q z!kV#<$9GM4rFbpqI#$P2Q9ppw{#c5pcO@~cVld|axC)%K zw9na7O|>t7S>_;~+S&q4Enl&vdQQ5ri$QZSy79*5;_wGf4PR<&i}iJSZPn^VQo23f zhc67QHzhVmRLrx_;&eEAF632s(pg%YPG8<`X0h*=_v7HsBG;1Si6f_{o;*d!*&Z_q z(9a2JLn#e9DZn%8y^M&ySdn!-rppq(5!Y34HeB&`a5<;Euf!|r|0p^Sza-l>3|m@e z!@F=3v4iu{k|pzJ`?m0*}0AuqxWmsSTXXJCEf7mMC|E14gK+9 z70duvpp2fmPYOjRN7h#OhP&aXE3jUL_oD7%t}CgoqL90#wZnd+u~G*dE_Gx!K>$km<~TgeAwp zq{-21oLs@-1mD+3f~(E1Oi701m>4-o=s!$y`sRSv#ewuzC_!-OdFn>M4(0Ma^CQQ9 z`}ei>6wEB~biMKC;ug7t3RlovM4ZSUz}~g%%#-r752}-O$C9R^3Xa7s#X$^eDNh2U zo~DKL=mWH3?C2&j{V&kNmAUCSobTqsJ6hs5L!}MH&XDR9Accluvx1x=YF)wJ?6u$C zHMz=wj0YI9MW4_39i{RQ@Ay=jkDk8EV+s?edjJ$tHwDY~a4O|8ibz<3m0_xBQ?fRI z0l;&+;5)Jr5gWgNmZ#rev44C0m9Y3*Zv$a7qhm7IGV$r`g6&E)i3c@QRr}?d0EK)(2rBk+a;6RizA`~hU#rJY4yB1 zO(QS=T~qa2F1zrqRi{%ia~9kol>Y9v_>uaRQ=ZdYBUmB2wuZE5i?u4<4ubV`0sQ*e zYw=~n{yTwfB5(ClMEUC&^zp1a9qE$a{1_bIF} zc+Ni=9H~0fDDz?CB{}mOVtbi_k#BDt3ZZ?NZ1V0_#Ff^<7*xgW8b@bLLZ$JbS08{|COAbmif51cp;yNChiG;ac8#mvnuNQnVh)yYOhTr zRIUo5$J++)Te4CLc(CQPuOW;9M+2%pJm~QT4GCc~_N=v_`Qeme72CfJqF1Ki?f(V` zBTiu)U+eLxLIosYblA{aHIUy4npc&O%Xl8bokZ~trp z6gTL8#r@!mS4FLee-==NgowCUjgKKdVD0f@Jxr^~9Ou9Z_d`Ji8?8 z3;+cg%~;#~>;u_4t*LCZj5qyhR@l`cQbR4p{s4DK%f|BH@Y(*R&#h?@Cz~N4WCqU))&vy%{M#R@i(HM zd&r_UIdBHI@8PbCDP)??+#?6}qOMOm|0{arVa?69U-~D<)|dF?(Lb41^AUs8%=!LZ zTzx_6z`wmYHoqT*+CEGR`6|O-DCiN$xO)Qy>sH?XkMH9dN`lJ=?gfM=c zr5XCzX8{qvJFxV{KYFachp#4hX1uFeJ^k*Ux>$#v;kwa&uxa@BckE6prm|+v=KOvP z=~hlAB!`0aoh`*5xW`BR?2rV1`P6gqS)Eeqs0vTlKufnR2ne%M1XVQAn%-~271^fO zT6(YPPscg4I(qrReDCo$pXg~lh-P8dLB{ckQyrFO%NpcxBExRW`^T<3*9k@-4$z7+l0#T*o-(GkGM|EpUl9q)E{Oi-gqpM`3^CpcC+RN zb82a%wlE3{Xv}kb=S|Y?mY2a(Z)g1devC1#*9%%Oc`M!Rq~6oRjblqCxvyBtb1J5- zMh!4n_mSe6nnzEw&%}TEVlP-~(ffIif|8Lhq!_U%MABaSb&z~shZ>95gc=LHwe+{8 z&awDjL!YFc1r4fmE`~U;2q3L z;jebe3!r+Rwe}CV4=iWWe&G5pCCYt~7w^V8K_e)f?KoNIg{%q+_HA^iknYkQL9X=n zS8jhfw6!E37^S*C3g2vecF;85WZV|>IVvdeq@awaY{>ln@LGqsRMbrEYx_afKq5K5 z#a59T@3gbC^QJcRSbFx;NWOE%_fMBK_mWPN18Md39#7R&&3;u!%N`(Njm(ZsTO`*M zoN37s@RJ;i9{bB!$L>da>}+Rs$w_$laD)20Jj{|6;Yu}?ug|m2w+-;94R6+4j5TcQ7h^pVyn)4-o`{|p5n0$jsv}n_nuxvJ*l&UXW2Zye3 zn(UImH8d!EG*%pyr!`X1)vdKarg5pHvsdyurteb9uB1*ME`ST3{JlOFs{j069u>D# zNCy%Ydtpy;mHjIu`T`Bnzt4LuSNd8XtA&10dziZ&`tj-V_h<3ac5d{%#(K);HTpbd zuIb`dz+Q5aQCo-14Ox|*^2EpHYIWiv)48mS%{zL%_Z4ev={w<#`$XbS91maW0ap#o zuL&~6Cvi#p$2W7k6w|vLuhb_^#kM3IEIkwx=NEs(w>!LE{+hVCQf)Ufk6c?>_-7I> zp}LljhyX!h3+zVcn(n$H~j6_E9ii6Xgi7S(ba!$VRxxlyVEA{=1foN$#7Ff=Y(nwjV9qr$N%jBwp z$dqbVmjf7kbn+wc$eAFyAD81_EDrPWwVBwqy@bpc9W)UZW>HM$A=&g9WE7I4KUcoG>G8Dghg$vq%~*xBh3Of<`Jct{(+zF8j4h+zFO_ z`wIK05_Ux?!O6lPO5nQTsjn~v-9=ZEXl+0Uc$eS-h;OoGzrdq{%;S^5MF`H;{K_J> z!a5{2@TXt!-81o#KeZ2~e)UBE6m&1dUaKiB7MJTJueh$QR5v*~xmX44(TChQb9p>& z!hd|H%cf9jPd|dsFI^l%4~$a4Yg?}gsEE(v!`AA8c)h)^%{WIU z6$PD%#l3L`h@xCOIb&6jQ3_8f1Z^H7r1GE2oYE{=9kQCHkYYc zuq|CT*&D11q#R-7-#>$3+HAfX4m>2cVzs>6WQ32zCUI?3<4aym%Pw4W2MiTUKVG?r zc-!*XDOJA!E*l);jy_iYx$wOJkW#-=?IAj9Udjd8DV*8Qo+m0J&EuQ~5z%v*B(`d3 z_khi{+R#t29di=1Fh^~>PC*dWlE0u(1cY9vuE+o3S!q!bwUui~S8D+8L%NUxr=@@C zzce1#8&U^CSiy3&lFv0vA8)xm7LsWx3sa!M0XeH`EO*Y1`$4?&P5~ah&!D;cWIHwV zJA2@AdICI7@+4Z3#m|&Gyd+9m9y_I(Nz~+x@RK5kPYX^@kT(YVZ91AQF)Y{yVrhdB z`%~(qK}`A0EYM&-coPwiWK9R1*?Rw{t4&&o)?$3NslT?O&LsziCD!K7FeOvJ9r?0P zpE#t_0$UURO0eTk`|dRx^RJR)iqo(|W(o$EKh22MVf-;HXg`$H(yF2|Ps@zf5vyx9 zPCi(uXEg2_TviwcN5A~eJ?k2Yn2@fyn7ph|cmi~+{`aeq*{i@CpDbOSviJgDJrR-m zJ-?x2&5v$xd|G?ljHC$R7m^5 zAX*K;ZDpSP<>B`C3BebWf8+9%=IlYgBQtxJb#b%klH^DKyj_`mC(!sPVfJ{$*rb4; zanJcPe^%WG&BA5#!7ey5X&>OXYIqWMdC`$sG<))&$JxHhWge(*`TQAxdcOxjR=K`E(7RPfdo1S*@2$id9(I3e8JI zE5v#fHagdDd=_(qNx#sWl^+HeSgkbUwjIc^cx(bJr`o-pFcFaR~5;U9R1W>8--t6-zM;4?{U;Wu@gV z#_I2_%|*UXsj6{u_p@`FZiFc%|W7?^K134_R zGpC5y*cpe|H4?@Ann`RZQ#A0;+K&bg@;EFKVeu-qo;k8P#}LAf_h8lMpNJeiC6hAc zcRV;sWb%k6DkQZwK41~IMC#{lM=%cv5#3xrm}9+W<$Ay-z$2t(VdT<);k~f)R-a1_ zoqxo=X71F%SB}58+9BxoQ5N82XsUlBrlAJ_9s;R16^(4H=mp$IKhCOlt_L8Hd(Iw4 z>d?!N!#c+G!p%oFz*DQ2yO^mnn%*Yg-ku_}Hzkh`PKcWN$>RJXD)SjVjM1QGF%_LE z#B_8MieaNeTxWpD^aD(>YNtv7?pk%*$4TYPVv>PhVRBPyuv5*DS#Okl9u(@k(gcc0 zzniCF)jfxU0l5%^we9fOQx#b6tK_7ZnH(o(41QX6pRUI)NK4j-_XvksTT@kiVHgrEih|0Fb9`jMMY)Q7w5iAL_tu-;&Nqv3vocN3y;pLE0C|%G zEmHEnI<=NLll_4`LGyS#uNt(%i#nUMzPq$ss5<0kz7amll}h^=sxw}#@pbA@q44c) zuoYs|d97~_)tIkS+Pze}s)4i1rKc;oVq=l+%tZ(+DwkNAG;J?q+0*~IZFlcORCB24 zXR-C5x9f%gs9r5<2*w;4B}_%FUm^874=Nxbc(R?}?{CN`XNdZgw({9@x7r@>rP;D(@j(*p)QyICJ z;C;yxcI7BE<9S9#!I|6bMyBwxuzOCTNFp+z9x!Ypglww<*tjrV?bGdsXVsLSmwE1f; z)v6{WT?Hfkm@ue5LqZ{l%X>ei0AmNAs=5fjfo@TN%&3%p!3^KPEVAUbm!-)SrdiYm zz0lisA!Syy6XhI1#F595!)tq)k8iw| z_G<+MF{K~L{$u^=`vy7nNhUj@#NO|C7xAd5WwZM%4nZpu_LURtL_sY_cKt^?_tUj8 zO2Y-!Wf$ceJFD&Dk{5Om+XaBchFcZ$e|rq?l%I09lm&aKUTV84fKDzJgEm$Q>GE!5 zuAkA=0zFj)}}S~+I_*fgdDF~}}q)vt~))`8Il5oI6DCGD-l7mD_lYn+)iK`c6@5TGlyM1MV!=_i(R}t9NHKM_30B zUWPs4KUpAra}?uFF;M95vTFs}s8_7i7^f>WJ4Xf#V($!=j$y@Ci6WUct9K3RpcSie zF|B*9Ddf4&?k6h3lZvy=FV#|p56x&kjdMG>PfJ6xH=VnfV#zP~oRVkQ|-iTO?N4yC+xP6e}1B8}8)XywR*@d#h~SISaabz%8xb@__AI zy$B}W%t+AtmfsqN)M`*wb){^2A(tu%6=b`@M&p=cb^=`$cERtVXtfqxJVfJdobQN; zMq+CA;X^AuLfjFmA?0S8+S%%&Nr9OzT0wG+-IBk~wCTAF-Vgu!PPc39Ovu+s zh5kh55Q4g|K8xMcP7I%)9_d56W-lll(Y>x?T;HF=?c~|px^|SI&Z|MG!{v8>{ESHO zYRz)3E<#&9`!q^=y%gw?blp0C0pIgBJDftV{J1 zZ#B!Y=ZwO4Q@e55JZqf^VM`%1yJP?=&n*IuV)E8Mn!2-L$24>;FHSo@z6qPWa#LZ( z=(ZpOqY2k_%8^s|llbNgQ$$+JVKqGbisN4Oom07uUpG}bcLOVkkmPYL@rU%*xz=&4 zMTT`;ocU#$0z!wPrD>;4#XJPuhr`ofGzRwNFz<-B9etSF%fI}$y=<}IY)aP7LDLc5 z)a|L{8}xGJNOwskuEKTEkFclrNej5;2$TZLoTxO!b1GMU$V1J>0sgF-#s{m zvzZ}b?2`{3GSYFbiPfwhoqC`XBq5u0f^wZ%A@SlqHYHnDO(X2r+T_p%ZD;ww8kutm zQ4jY%f+S5Uy1UMyKnRFw#4@<`)2$!XF#E3>K5LS~$Hsi5w{+)eAE6Y&``LZ?@HeZF z2&8%@cxjEXM`GP`Ho(o?n$g$DZ1=ua?0N2NQitB!*nx-kVi@p8^JAZ5mTkIU z7fQx0XTNwJ(;a(ModqB=MyY%6(f{#*Y$i%+(ZnG49h@-|Q8SRv2`iEfHGJiD;+m*f zgqx?}aS@V5+l@O$!q=x=iMVAV%i5jMh@wC@U%w+naDaVAFd~Vn{U6^g46!cjeuBUo zu4m`p!~aIXrxBbhDVH0Lwdp6fS>E9;&a6-Xep(_z$B0Tk^GVEHopUC ze#)Rlo#mcld-%aRWR0}{bHQsHb5UHL7#1_!!=SDY;W-dQyi(kaUqRDZb|C%ziDzF` zWVkJo0TOo_mK1XBF2ME|8r`gQvj4JmM4j3O2eTtTcKGxq6P+}Lm% z$Ts2YN{69V>EgvrS9GPr?*$D@xq%JLUh8{^*F(3%Tf#_XScj3YGS13zz#+gIvJ(~l zAD^=LZgkDdD*Kri4k6D0_w8Z!H8gIyL#vAyI}W zMR5uON7as9(|$B`y3LaB?;BgNnbRc)w5c%-W##ZWtHPqcjh47K)N%ToAehJP6zBtsd z7I_fv`JHRvN74rXi>)3!$QH@1YG{<3ZUP>Vv{J>*PuZ5l*0eaf_p1qg%f5!jDaaPg z94NQ182|2%54T9fVj{{Cm`xbRjBE2}bEhE5&u|S#m^}fP6|n z*Un*#>J5y)0JMgW=dTU4T&ynX|L2mtANYjNKcbzdp8N9^coSnKRlAB^!QnJ3rt5z6 z-tPLU^V#XGUcUmbgSo&SQ$n)mbqlZ0%oY_gvKo(-sN|X z+@y4!esaTH04_d>f>sc>Tq1a1x;T<$O(`A#Ja4`zGA(GOSRaCw5|JM628}|n<=dCY zjaL$99tPrPUN!5CSSRtDd3z;37J%wrzS(tB_%;?9?xEJ@p`F*U2p?)Zt{0&&)Jc_d z>dD%4ySAOp#VWh6AQ$p%liZrlZ(X#kdp6mEDt*77_V*Q3fu@RDb{x5#did@?eV&|C zPaJr8JyeoaOzJn|O;ZJ*Oin4;+6Kp#igc3)rw|Oa#2&HjqVZStG%?rPI9=#(stcPi z*Y)2&2UNpV0j_!X|BTc{8Ks28f2jQRBSU}bcciIADCBG}#@aH*rwJ)*zX@_Y>3WJvC_k9`?Aw@0F8$l>5=+V(%j5AXlP#P z-PNvJJ>C&YXPl^88P%vSQ~o+NcKAl@&DKZY{uh%%Z5q~ga9w2Fl3WbUoAFWQ%j zLslqix5o;{GEL!Ormc=MFNzf)Wyy>FWoB!b%TevlT+DWD z|Dv_akW8jdL2Y)9MaN260L?k*pW4QXxY-cw)@JL4JZ-r5MPh+VOlZS5pxYc zV#0P!Baz=8i)MYJGXR?x&;CQsGRxGgI=lMqD(d$0kmj`88pjry)!1B~Ii|(-CjD0$ zYK?9X#U7$;*9?Alsz^gyMY^f#*`~x|tcX#SWw_;RpLOb5Dgn=wB0r1w@8wr3f~gv+ zegdOj{K^0;vuf#ohxL74X9*;@o}3Nko4);{H%57CtL$Fh;@JZApMy-8F~E6-hfW?y z*25h?pN$q3A8J!mb+oc}<^^Qhi4&FRrFR?L7frDA3z62}gD}9k1F?be!VdalRR0L_ z+JQ&sXH4gbC%swEFfKqbt<{HxqTeT!%d0EgPg%P5XQCSGhcLyYe1viFsW#n8HK}i! zp9e+CC?jWsN%Ly{IM}|2dyBOAKCX?o>x`PnO}}j%zLKx1-=oq!DnY92qo!xQtt7vMeUiz3Bhi}C~L%FIDkxmfj5oJZ`B z7>CO*!@Ho;bElN;(W*b~lg@H}yz4mftm9QudLn?QOEHhGG^o&X@}NGWu363xu|}wr zXlg=|BUnkpD#!A=ODSqkI+w|YLy#V=%j@aF?MMUu0DA`#AQ@Cyb6EJOt*&8ANjl-q zyjc!HY-FL=RIVBcZEP}9i8@ziYPoj-s*EM*_#s_(idxy-shujM%~ltljY938*Aj2U z#DgvQ@K!5_mi<$FFLutejePovOPu1S-eq2Cm1xhfmghoPu_j}eF2(kPYve!Vg{V}u zRcNXbi{G4_?J%3rd2DDRCKc@*_8K+yAR?4z11l>GQl0lD(wgXVboh;$=Mga1PdJBN8m*iHV->n?EjTSJ zc^cIIyjk2K>+7u4$z1~|BOb61-Gq5)AStYRgf(TcbYUl|XzRu16@{MELl3$dB zWY5+bHi4*YEP~;|=YKT^VK$h`7~|{#|M=3bGZ1 zOv$%@!n(JS_|P7HEN)O<)-zJVMM&cJnIXxTfkC}6W5-eD`ssNdYHH>U=7Ea>=0Co7 z3!~O1?Y+xXpSr{Wkylxlt~aaJ{q~cY2@Ok`mHnfSC=U)B*<375;tX*Zz?c?vEr2{Z zJ-VtaU(%Bpk+X+A;@a~_S3$WUtV2eCf8~uG(Znw(f=M9Z2|=r@j!a&;VGUfNv&G`U z>YSBG#j^6lZ4a(>Dc?JxLF$k6xm}LE+?shzMvG9BR<^KK16$a2%XG&c%*e7k$$M!>@ufT^ZQj@_8Q5)<+h|srFazC<*Htpil_DxQ2 z>4@u+{dllkT$9J*GL!h%W+oeFR9j@}J(uZ~`|sp*bC1xZ*v5QECFof9rw)HQPFb#L z>frIO7Do)%l+CLLj?6C;8MMaDI#F&K!{H%z5ZZrEY&%)T>CvrD?7ugsj>>wc{B@F) zNEnc1j_fd(7kl;x2|U+?-9?Uwud|Z=Qe`b?)MH_n93WKWUgrC>1(rnl z!jHS2&e(2ubUEEc&UzCiS(sC9YsI^REZ_-o90bpBJQJE}#{&)hnJ;A$nx^QOB(0~X z^Jeu$@^Vh6Hdnpj6O&ytJQwyf&9Zn%euKx-{g2N*wsO>~J~v>aW|dc<9NZ0G_V+hA zudZ2!*W3*TJ*-N!96O@p88TzRH(8)&7xzxAlXP5E#IHOWWV#5)n$K2@jLI*hdFjLM zC(}S~;Z3-D@J^n3gB7!N>Xs1^yOB1vYt1=pa8-uy)ps9t*{hRA+hvKDhj^wKw^VRM zZR|1!H?kjR+S5eL2Bt)<%|uwvH;yuJeIG?D0bC7RPvV$BmhS4Ur^Kgx6^h&+Uwd6& zD%dFNS%U!oY>XaUwx#4|<}44y%i~yeS(WqJJJ2TPktx85OEsO>nNMkw_&VW&SlvEvBFG=m-_9r2vM!!7Gd6Anc&i&8$^*=j;W#Zqxv(%jv zl3e?8zryx!3bb;M}iyKYW-Um4hPAlW*fOf3#rU@iLgLBe^|fP@&miY?~y zsmphhHx`!H!=M}goa=mL(Y%}bqWQ}DW%rTT=wIJj2P!9u1-W4cGX39wmAwwg5!F$w zXwT45_AoDsVDWUy?=Ac<*Nl|GIxfHR18Uz-_|R0m1btA$2m|`CatF4>Hw9Ij7|8~W_i~ZL$)5K z%$1DfQGgJ5+3Np)q60p%dM7+q!oDw@tv?Yt^ZLGLmZnwvEf@TxWYrlR`R3KbH#v*+ zV(ZgK0y4_++UfE5OPBsHF|^SC&l=PvzMs<7^(t2;jd%ngJ4 z#&6sgGOx+;_Q~~<|8~!~&1N{UEqJFTj$p6l--!mBZ{C_t`G~A2Q!dTPA|+w{U=<$a z-H*yT6CxSK;&D5Yt0}|w5y4>1srThe%dy^n4K_%O+Mt(bx13K4fl)m9D#Rz*c~I*} zUEPImPoK6gOM#DE3vO}Bf@DgT*^t)eXmjX(8sxI| z+rL`Tx<~GKDcYT~(uS1`V6L0GfHYBH_)_ld^k{2PqQ~)r8~!N7Yn=KATH#6*SDxH| z4dt80(NTZ%+4KgqB|L*vW_Y7VXg5Y$LE?GAXQJoAr_hpxMgT=g( zCN)}$!3o~U&Tlx614RWajs_1ldOMtT`u3ng>86!hL}vB{$~?4?0>Z}Is_+*ddEkUu zM`g{XI5KL=5Vf&0o78=_K|s_|?4S77&G%^o3?yC7P3ZgfwoN6544R>e|rV$Lz!@@z?zTe97V zdmju3k=+fiT2HLn62URYR?*}Nt`traND@9p9GmXB(=qsZ+ z!zIt%MItlNdNvKxa&wcHeQk6{Hfku&jg1g%xY6`C9-cdVJnh?Ea2c~?)DTM0NLRKe z`-O9%f-yJtGYzkLLCdy~psl2FBX1BHoQ6Jy?rw?T$eOx1TP_zpeO(#wFok5HBs7tG z%cSLC0VgRfpQ8YS!7nNsX+MXUuddWZx=VlWffsv7B~-i$4SfM7i;-|hkQvLp!zJ7g zv-P~$_|#Tly>X6O#s~H(UZaFQv7t-~&FdywTlh|Mo<4FclZ@yY{@d63sA_~xAmXGg z>aOczBIOSx{4qmDm*3l#|2C8t9O?`IWXH6+nO(=KWfLk!j5u(}d{}?w!RdPwr<7LO z81Av!8$OoduV2Z3fok_9{fzwbLZw2?`&k;u%pkL^m<@GUPDaRUytvo^cV8PKbxtXAYmNh)zbRD(!Fvp z!dvC+a7mhXrmZFD$+J7N;)F1Dg54PmQ0V%u?xK=|720&<|0?Lks(hdC~Q zfckZNQ)h$oNm&W5j>U3@q_y zjif@uh8nK^p{rg37MBt$opp|PsXQ9ewrIa>__g>j;aNzBKw6x=a#xEt=$|^;%2ckMiY2J>5s*gWiU`P+~oZoTZK@$^Dt(rIf?Q6aIqWYV+z!5=l7m1SByame>y`yyjR`VT- zCQ$(x-1;0YjzIE=IPzB zv}iv@CUnT%62vxLpi{l6WRDEmDdv6X=G>0!{(7_th_tk%(l7ABO)#q`yY#{3uGBWG zikwqbRf|vJFU@4ZIN`4GUx%pC@y+_zatj!PL|n?1WhHfh@IsHi z`d#0ilzQly5-n{82u&f-Jho2HEH#Zu-K;LqA1&^q;86s3YFc5Bs?G9+>sN$#2R?o4 z;QMzHx#npx^+x!#VOG!i@TI9~--?m$QOsx|gPfE0NvWaZdMS+t1I7h(HB#TrRdtE6 zguPQa?LF0Z$7A|Zr;LAnO?iX4Eg*T;&2^1Oxue!Xi2d7fejiYla`kK%3=%4s?TfR45A$>UUPvl}IM;H9-)&n2@}AXuUnjG=L#^CMO~Yt9JHH9!f%wQc4uh}( z*3KiSAmkc?(N)*?8(h=YS>yFF@X+U4hog&GD+&JF2OH7ehTcL0uiY0Jplw&OFFtdX zoQM5K(NZ(Ne*Q6SG)ODnsHceelYd5S{_=~*!*`TQ#txxh;6r}&&L+=>1|fm*tMN1N zw&R-ssQ(UOVQD@PiY32u8Eot^vttkIgbxdKzP~GI@-N*UjP)yL)ilip&7*ImWZCxS z&NnG@;(C|$FE9o2H;-x0s{Foc(XsvX2lx4V+kFi{b>qw~$Y5oKLf%?zn#7ty&dt@_ zlf4EJdhx09M+q4V#b}_^WZKQnnrVa?%kJl$E0U9GN~ls6n9^Q?i_)UjN6XqZLG5d(+fIYI%(ZBU zZ|SSPH$a<1=Rd$-O`l}>+QPy$Te(Hz=Z;dp$;C65VwJ-UNyNtn`)J7?{d3mJRPs0f5sp<)=YW4 zh}pM1LPxA0Q0;z|<}Sh(x~8G{_Yehg>Az(&%I7-^^Is{j(xMS-^WFZB1_x7w0zWS~ zCF)3`hyBE_1P6z)6eRz;DmK=0ws-J(*7q);n({mr2^r4~?Y=C3<Ak zht1g0xHn)ppTfmX^7X3gV#g`zV!Hf%(owQgC;g<9;mUVcns7UN=$$y^e2ni!MHd5Q z2nOXruq^~s z{=4nVy^N=Y?Lo3@>tg@$EzS_1k8rsMO%-B9T9DnUa@6sEdP3m`;N)mnTHJ$Yy#I&Ho2f3AHkRn>FwC25 z3|!8>-6%7SQ53VceEeguj}sgXJ_`)Y4P)}2XWLN1)^(E z0|;|Jh`pU1*DTlIaNUy68{OQ-{t&x#PFHW^if~j#_BM**8U;EK+Mse7_jH6z4X~T| zJa*9h$A?TU=5m(O;U}U}j-*5UlB9U!kROZ5vr~OW9?pbCmid2t{MP3trl+e%7}cys zQWZa@|4O3l*%qO$YS^0`!#BW8+mMwMCpG8c{DxX*YMxJ%bft}ECNPjSYNN^1$9kpv z8`h}zH1L(x!ke# zXEokH{oC~OHnS{S;A!S)qz^)YhCi*)yUN(vkG0HV&a*3k&g4NO;y!fhK~uG?XuA5< zBe`clSFU)TalM%hi>GErJDEAhX0eyKBfaLE;KfG@7wEY`MU31oAi1%T0M*uGBrlb% z7KuB5YikewI%$v;!YExrra?aHj#_G>mzUmmK)0eKmv2EHE-e)!=V#V;M}1?DJN$rd zltHmkk4^QU*is>h+a0>waf!A4R$S0I8+^qMy@!3aApi9PX0KyC9Hh!%^hP{>8(~Jv zEKg}o^H30*PS^X&Pa|95*g3mAslzya*CWgT9ILuG!DP7&c?vj|Ez8 zp*gdFWNLq`@orSa(g!rg<%ZKy#>p=#lt20}%sTjo<6_H{E4Z;*H6j1;b>O!5#|e3R zM;db_KDpa`n(xNCjhqdP8hZ1c?@!Z>t7egl>mp{y&(Ed+Ozar5o1>tlPx}}XKRpBE zJZj@Qlf|l_dkOdb;VD&(BL`i*GpqIMqbz$= z$FDjzV%>GLv|Sb}?fy{N13@Lyd%Fm{pf+e!LKihoU;Fl&3KKB)^gNW2@~Sw>blge% zBkYMZvDR~H0HC@&NPuWBWkv_FqYL`;l$xl%IL^YpM-iiA?h&RNUsCbu`zQB1lDL=E zE15%n1&R|EE$+c8XU2ls4Cpv3^!W8wq7=8gvoMWGY)rS|j?BdTE!*vhGTZ&`Gm2hc ziDuHNYkH~54%KxBzvP8fhe6g*vQM8T<$f%q@P^s>g0^6jrULrl)$1#2zUpx6aNY@F z19V?>FK-iBFmtEbI+u(MVsI24Y5E}8H%MmsvP8_8UqKB3g(TH=o5#o>(>mJo8s_@H zFW>r^sSK$b+yA9!{Fpwn*tRs&`255>dYbry@Od*;SLePiYxf7QM}w62dQok@BA8e3 zfrUD3w^Yf8&CC>LL{O|mQ`z*0`m<9Pd?+=mY6^wgPnRDhyObD+Jim6V*#GrMd+i!O z8PU;1Sa~f@1kHrX5+Ohql5O0MPJVy^o9Za4x%=b?<&|4%l~SXlM}HV!iaaqPHM+5x zjMJiea5lm`+=tYvU+hzh?m{^#o?li}KPpV8s{ptc*iV%E+a~^mY&?wW$98EQ>m8zm z%CE!qqDq*=wR)sn-Hh*+WFR`ws^WpITG&g{ZZ!Cqf`8jV1bZHnj%z$TU#Nabi~H(8 zjybH5M4X>=rqP_A?dTSh0l*XG@{mPIPnIzK0RLo{Mt@9&k0q} zzIW4-??C>CdaZX(vqU<-cqOLyC^rt|kuySPZqWRSRs-j4&!@8MM)CtWezVmyDsJEl z-R#&Srv$&K(?6Fu-=0J{bRkdD0{~QXCFOq-Z>;8+x`o?40Fy%75!im zD@w2D6gLYfOLi^xm&plM!fr>4p8*XF?g-!0_gPLkB+>PGt!8bQC=k`wO`6Iwa|P2% zoA}BQ%y*$2NqY7q~L2n&=n_V`T%*6dQ zwTp0~=>oK7&<$C_BEP(E$+o~Gb|=95i6>d_!zGr$)RH5e{rZByF_?|BYuF749jcs%kK9p5Zhj78h@ii>P@^#dXa!Lq9?|QPCVn58jAx_{yk>#Mcn3%^Q<{n)7y8 zDG}|UJ2}swWN0*>hQaI{*VIvPJc%)0Z-}yV%4*>=P`d1<)q@qKoY9rOJ+I!w(A)uw z3Hklc)893Q315?tUYK}k1vCd}#P%z&hc;uXt7CSpozG^}l;Q~^`8(V;^XM2nt)O7V zJlXr)q=IiOJ?-Wer4PRKx-ebrNd$2IkzP< z+qo(VHp+#28kl9I82@D_oKm2}_QOrv@Adw&66w>rn7wh&99O`?`QdR&Oex5@w zq9uFIBAqQZOSxE_xU^$KA*;^BUn0ijp$j%S-w3I4{cDPBekTqe9OCR;qEy|4*l?4z z_Gii58xGJ3I`)`s{%00f_VbqeZ_cP>HO^$|a-?Rp;-hr2<6kW|d!^1ife*yHbUR|B z#Ndt<`VTwpw4S@TAXfO?u&tw!)s;h-8?7?=QBI39$~S;meP$WW#V?u{Gc+Z+1Bk2u zbiRG$jQfzgcmq)DuIjU2UCiQ<=BlQo!BhhOVP%4y%N540`!klM+O`5K{Tb66v=@2Rij!!IcTEpGfvqGT^U}TwPXsCB! z5nA($$p`A zf2suIv1iBQFmhFz8-=5zG5cNH@-nO~zoOxy@KZ*C_5h4ExI`V<)8kWbaJ*H95@wuy z7ApqMJW8J-;tI1}qOXDj^yn8BVEOX#l5(rZ)1=>C(6~Fh(-UI((WKB?cSV3EW&h=L zcs{lsE>a$;I?Fd2q)gtLdaL@Zkb)9wJXH~M!wRav}T~(HpYx7X?f{o_=I=FO@O0|{FFN8z| zm25t0Hnol&SfefJJWFiGwd6&#zS?Oheq>3=bsNH(E$ zay=E~@R9`qlR4`y+eu@{;-&4z5tnc`i-CNDFP&yjP_PxjtcJ^;`TJ(D3N*5q293!4 zCuEZ|YWClX+lA0F{g~uFpR;LKFh70r?oCn3oR;P`1;zY)Rk6G%E=pzsvV&{L&fK;9 zcE&*4DwRRTWX>8oA3x?J#EhCmnzfsX!VJbd*CSeXu#9@ZNNCgzk3rkBfj!(^X4GCP zEUJ{4K(TOY>XjJj`}RD&S48WSgrU&?EUlGnZ7dt2OPkjj5ZT^}D|tn6yGoTbFl#4^ z>70_%+j;4ir(~MJht%{V^rI&qg+B{zTwNhX7x0rlv2{i^YX~EY+l(54y9HeIqgEWm zUML=8wU8G4+Jc7`o<{myHtbbD1igK>Gg_*^4n_k06Z&$ia?b^_wRb+y3}9~Zb?9-f&M&ZAs^G%oKx!da5~4JGq|BZA|+xg z{0p05%8}NO9%F_#*l-sjkn@g}xiO=VXz+DQqw$MtTl0XU#blvDLRJliW2&vO5F32nYc3yt#c|-F$!v9+PN{ir)DtGw>!MJjYoh+U2ES%_{dQ_sDV3C;2Mf5D1b)Y)fgo z^pWrZebO^j{vwZ&|H^P*lsD0iy2gpDoK42^6clI{SURWIWpmzAZHP$@LXdb_g(Djl z4+x>=pvmSt@ zf!CYz-Rw?TrwP!#{s8nWdY0z<|MP_MLbWIBcZQJnO-Sm9%8>#c>cxpK7#cdaLuc zURu}s@=1l&{pL;MPa-ac96UUiKA@W0+OxYGTe+KJ7p)QR zI6-GeEhB0R>eDi^H1EYYf1*_L$@ zje%9Ewx9UZ+GI@p9=w70p%;G8A>Ooe>2_HE2>@WdFrB|g-g#?tKp-rhMBmo_`okJ9 zkiz%bquMgn7$4MNm17^GqD=`MeGzr|RN+SXU$->ny`P^wm3b#@dQRFv>YPo#d(Xna zKcUzKFt~!5XmiFQ^R|wtnv$PUNP2~%W7KL#Rnt|Czp>j^quy|*)SGaTu*87*-b-<@ zrkEOGlf0C@4V2k#bF0htyA`(-uPIU?>oFFpbTbyrzYLgkcU$*>oaF>K&qR_vBrH5yFBp0%1~%0Tmc%oSICE~%uzY~; z`^L;`p(}X6%zI)%?uVz+e}Y{=FOPUSJ3=n}jl|ZYOtM+SyiVt^h3oh4t6HNC?3^y{ z5{zuCCi2ad2K!rkv$)`!bi92+tJ={0bo*r#b|-{skli;GldyBqrNQgq*V5zDllT7` z))>7%FJ`)RQihi`Uw~b+2V-?dh_^KPZ2hCn6i0GPo)4|8ZIq-v5@w&2=K2h=#G5uh zBKq1b%k9{+n3kWL?<=K)Z9`&#{n~gMF2KPDuq;UzALaFMGzyDOA1L@P3`I zyPrj_j16RFO(eUnJ!;}hX|!B6QC-z7UCWM!;7Nf5TF>mQHj!2_PWIN@*FJv`1?k9g zvRM&ktUTw?`&N@b^NDKK9GAGB#|~fQbn%Z|w}M~FR$CV**l9=DjnW5iW#zDfk$8O z^*C8xJ|^s)_2I${|H~m-@92Mbb1Fa1i9PIQLM%72(JT_1&Y4g*z3=C!{$fs|+ZqA< zqKwD!8XnA$9Aa0)ne%(7k+jY^hgwSW^_fAT{N^|6C272vSBfgfhl(p@o@NWF7?>_l z*+iUEep6sRetS1=U)GCdr+oKD|4fx~rSq9`2JIW6{s5roN(<42LWh;D6L1eFM3H(! ziSWPPZ~Gdurp@nb0W;L6pLa`qb`+f}7&&6tv8vm(1aqqZI1}2Uw^HI|(EhbfFi;*2 zW)zH6ryyFLc)b6wSK0R9#F+lx6~FT-0UTYWJbMir3_qr3F*cKS8VaK`t)CsjM12+9 zxxSHr3|u{LF?W=uFzYns_&gYA=j4++>-?XxUTzdx9T#4+){;`T@hu0~BqN>ZSU_`V zCTIu|EVL{e|A*VKE|*&KkXjy8I((;M$5Ko|5-w><8CsytW~UA1SleeZ3N%THd3PP= zvT75XQfzd-@trIZ?xQciJ!Rnd$QET!a=i8B=<+JG0q3KV6+yZ#YgdEejl;5{p9U-3*o%L3Au7{-ErWmYV8_@e0 zg!88dCjim%o5+^Znhon-`@+EORjS}Q3?uZSM1#afn9S{7$~q^k>`#|-f#rkb4a-;e zes)raYWcIZb&!*<6j>c8PgdyO2REKZs*PA?cd{>HFQ97HDow`fC{V_2;mPOaydN20 zI|nu#Kn^2TZFvRyb42O{tpxa8nG_Ae-t=u!^XH8B-P+#|tJkU|`^E@`i~Kwk@rO5X z%Jff&8q7C>25JRwBH+);`HsywKsJxrqEDsGre?Wp9PO8Tl~jMlD);zMmG?8o2cXiS zi&1agrS4L?aRc;lh*4borL$Qz14d+}A!BIE)&gd8{uqOp@s(3&F^PAKcg@k?rvN?C zl(9~KRc5N{;pozWEh8<>?8Yiobd%k55$D5UOEnE~8W#QFV~H70ryg{Q zNBB$&f9~3H0;>D01=*0J;Hxa0=WK1pq96l60~?b8fdsaoC#KdLg^bWL-6h?Wx~Zx1 zP9gk|VT?2yIRDrLX%Z~*N;RfoqbApysh&BSg~HXVYGss;rzN~CX)D}0wK^Kf=+Dqu zkRpD1a7}W5k^tPB6mo6f$2oxwN_0e!p$K1r3Ra9+Q|aUpB{AFv$)6-J+4r%SK%`ov zzKG?S&HWB13RMD6em^i0A2}CjC~-%TjAxE?3iHM=84q;$Ul`!h^~iO9%kUD2RcB+P7}`UxxHq_9ZF%_!ufY z-n6i@myr#AFhkoS(3w#y4G_Tz9=0jqQVVBadx2(Egi{!x0 zL7&TFaEnn}i*3KEr4~TkXf}lf*!w5+Engj>_&wXetEqecPW8!0QBxA8kzLaM?%4?F ztu*c&f;+Qnu5z6*5y*@-#g4KHr(g<=5~m~Qg7?>O2grlB4E8^X9JuZ-vVe%SF~@Ai zwLi}qnq|_tK_ijaxIwS@eAuIn#q3RI(IW2y^-r7LNG0h#dOZ0S>$PB^ znV9Iog2(O}FRoL%Xk)XOs_BI zH@DjD_PBUzQ%5c9!M)*4K3;X#_WZ$Jnzawc(rS5AkwRxu{7272#V-p0eBj(6Qx+Ip z&+)tLtTQ9?u*r=+z_uyQA_bBo-xvPL_H_L|J1C{^B9iHnaJtAwTS&IwPm?Irb(hwl zq#OHHJ3KMi227}f09bQBx__e&Gs}DIOCfF2cu!j{NfSL&XSmNGUee{>377T z=dE_JfiYpR4qM1R%9+_t1#B2=79h3Jt$P8$3f{ zw0%Vr!Qp+M^S!E)^yu+-NiO81=F3Xs(n32hxQD(PH0_m}mu~=9LIzgu#?YV|3f>EC zPrSd&p3>R%gHmKIgU*3r5r^zQ+)h)dzAibH3O;yKPQ%hU_=k{z*y;yTySI{cvi-wy z>r#&;-@Y~K2h3m8+^|m@_%pT2JrToy|7BaBQ*o0sDKV9-gA#vTMZsx!NN8&Fs?h4S0@oW5I-)LC&lz0eH1OjeqUX z#@X@0dd(jL?>;q<=I?=xtwu`SH?ybymke?DxZ% zm0lU9+hP>tbAn04ly!S7eQ3*db;^h@PkHHPA?|_Sor`9;bPW$fZ%xIfjhu^>+Oe=d z^S1_Y>7P*NXsdYB(grll{1tsnsD|87urq~i~ zy7MOyu2w#+?M9%hDQ?m)gs(Jpspnb<)cm=HnV&Ch7~2LGY7-dDagL7F#7^LjPcy=ze_YUlp^_RL{hU;^dJt3HA2(N*$B}z4_tj9Q#L#C)t9M9%>&r;c(g+AIgYA-9&t8LHw0M4 z$YeegWESFE#UEEr-60Nh36E=1d-vXjqi-S94j5-i$$fVHV{s+)b9YCiSnaUfk-K5^ z@R-_&z~1J9e?nW%+pcTnzCW`KoRd9~D$#>z?hd(QerbHm`_{5z)h`3zPdQVTElrOL z{tME1G~TWHLN%sq)>5+z+tYY7^t)2dvg)1q|0>Xqns(f>DbXzj0`=$CQGa@g^ge~P#JaqrnbFw3=Pgy1hi`aLn>7+*T%egRs86 z9Tva`$j~YLi+F}&ZZzg&v;@u_hzRsJZDVYxAk|>5E<7OoU3bno_h-EZ*5ypD_`VV3*j639f(C=$om3LTA|%5wEbw!$t9&GotH%G~@59 z$hKd|+>`}8Px{p9n(m3Zt#HJ>d2;3fS4G_yu>mH~;HWvwP3hNV6EfP?TA+-(!P&kg zaTw1AzcaypQ&}{*cxKIS3OZP~FO9)~jE(YFwYn{TT3zb@5x6iTE zDx~F>fCkvhR1j!y0m1q)oe`W;IWw26x1>nPG>p_$8^f%pQEPIf1^Q!rN`+~D*A=>r z2qv#vG+=XnMxtnJP0Cv;h0rTyDepe&LK-1pY&I6RHuFQ9*M}oTo3*Q*!*7!53yqi)|!d&3y@MZ01tAO6yrC7GTiF zuj)1g(j!eN1Odp#{HIx=TKjp6!;RznMbvMIOYFBgyI*j2Y;Am(4^>frK;M7}M#^*) z7t_7C4N);D!}Z~x1L+H4Tm+uP-KePtHl&@~Hl+jS0v)NA5>~*YhsS!a49XRtx@)59 zW<7?Y0j0bxBEF8g#SYAI$Ot-zQyi^uH_dG2wf%ttMdfoVyc2#e!OrZaStN@#*opXp z45cbS7uQYU`Q(s}#?Fn6vxdItz{HpD-0Z(6CVPpApHm-@zC<`+JWyeX+RM)zZFTcLE!PU_=pHVldpWfr$ z@x9yr@uG~C!{<)4)e51%l70>jVRDfeo1NqeYEGW}^9awi@!~aGw~%?h?IONKfHASB zUM_<*S4{fMU9oBpF_79phX{`czv|RXJuHbcD;=rH7nnm>DgT7Zau|I}m_u=qx|Q|e z^*bZmP*hg7AHok4xeAmb(yko7QKxDC&{y)}OJ!HJeLr!x&*aSJHMwYI_@ZQRAD|-| zkjsRYltxMjLRVqaG=@m?%x!(;;vE2*Hb2XSB<5G2JQ)&E^}mQSw7?&a9xr)NGk=8> zXh>hbvaE)IT|u#o&M%moF$8dSb!=jt;gr$>pzDIV|Eo>Y%RKZ$2zcjIn=D%Jq~DDV z!WD+r-WZMA!k*o3F`n4Y%>o@9m#+{ON>^SX)wg++PesID8_-PQXG~Az(Z)R8OEayD4x9Wr2-DEZwWrYj37L%!4++-X z#6fr*wD9+3TfZQJoaSeXS=Y=Ay;H`-X{rAiO)W3nRnVWU#*M`lu>R!bASOwjyAMc1FaUjs)CyQhyQoh=AW84-U(9-=eg=(Ii3Pc&|7*K;@V zk@+Q|m(1TusUg?*%bc3Hqn*-Zk}@I^+(MrTf)r%AKdjjW&f< zK^UC7t{v#x#DFsMW-W`X&YSs_pFbG{zPcwj9DzmU3Bb1wp-O(D=zbppduWYS=l(%8 zJ=yZWk&v-%p2Kv+Jf8u_6S+kPI?<7rO!Q)%T%M$krgfoXnkO4oWuG+~7#vEy#`oIx84!jxrG;q#ATA>001Y?s#vfQUW5167ude=_qt@~mHs zh`8a&Ga1Qapuv4Lf7bm=-9s8K7hOg1T@u6nnHRXYo5`vvC1~T$V-v~NvC|P_6U))j zqfrZ9!>=rAbHHjR9CUWAVYfOp@R7-vlUM(@zIyI})ZBl1>0^zeX%+GqWkV{kYHS|w zZoq(p9dpsvjxUXxGv#?StxN{PHn4`dW)B&9R}6FKwpQt(D|@`tfP-`%H|d|yn9HN` zZ$e|a*?JMeM_*-L4WAZq$)RAa?am~f>t!a+tfvNHw35-%7k~?O0X@k^oT@5k{CLY| z$5lTAY)fw|@L|hLNj>!@zZi~MF1lDAlj(Wg>)?^j#Yb0VKISb$3oSrFGjR)B^RXY4 zL*@C7G+W)xIB0m8)UsArQ5{*(@p#Y#DS0()8aYd}HBEVtD*X5r<$J=OFyBhYy$2oufXY3AqSmULRwNB#*(uTyKyv6&-!@3QWA{CeXU z{JlwPZ3^RGqJL~NVsl}p*7ldOb=qMs>vP*^3yTmV?}Dbij59qncG*9nnK-jOw43Es zq?;v#+5LGlYERIKYX<9_fU%I6syG^}R&KxMC*dc?z+ZOaH5S3i%_oynpOj=D zCv9yLFa_HJ4b=Te4P0^D-R93uE7xRQ<$Y;N_&)WcCw>am-m}mOO^X&18uWZ3pt~Zt z7;j@;4aIC5flZ6;lbzW>a4QLWfJpbfE3c-=9c1LK=J^O|(xjY~P#2POS8W94eHzo| z`AaaEpgDUtj9O8k)b#mv(a(_TBaoS{&MBJwseeK)5?Dj;mMy0HI<1(`aK>&ZE;((l z?`*O9Itz3yygIC>UjmZb*#*0iJEYO&2+xOE>F)o8+M_g!?p*8prZV89dE8Y-%hG%w zP6480tvlDrolEbuSPm3MarFWlgb zZYf2B`%x2xPx!GMw%-W0VA~Dg;?hfu_gOzzBVyqkDXw1KqaS#Gp#NLJE6If?k)6Vg z{S%`wM3CJ&bcR}?o(J}z1%<7{wpwxMLR_fcFW#ja?{3Z(9LlIZG;uLd-BJj7wJT@H zeT%HV-e%Vs8j?_#%v|#fs>x{^EIKn2t{L#O>Dj?e`x+sWq=lZ=bZmnrbd!^_nPsMCAp)%kv_PFmg^*L2a;rnJosixuZ1Q zAuW+?&Eb+47!z?(oNC`*ADoUY(n#d7_GvePe_HkR`=hP9@xo>#6}tLRtizD9KfevU ziPK5)wY7E#ffKeG#sFyz;JW+~a!7gU6A7ORMp8_zYKq_wf#d+IUSLOQ6RczGn^~eD`mgY*M*;cCgZq`GI}p5RBAE)JLECor z{PZsqNJMrRYHg7}v_>8I4R%-0_XWJfjtpmKKZtM(Qfd^C=hH*AyNyMh#oi-4ipwv! zNKC9^bF>qjCV%JUfiIE?op7JIG(4ijiT#NX-up-Z{5nlaRxt)R)Z@b z*(_&)WfGs1YvXdw8y2K4Bhp2?TPbHlp7kON35!ZsB}M%Y4zymf>QKU|l8G$b<{62| z9((6Lic2e2y*m*bc5OZe>>2IM)>&$F%Km;&d!Z9B^zR^* zo$^__&dfxWUbeY_BPE9JC7LZD{ysTH&g%{EK3SAa9aXIVGY9kY4x3yZ#-(&;o9qs z_cNanZE$^U+UF+o{%3WbaJYM=EFCD{)Km!BMiR4^${ITc?j#Cm6WiP|3*&h%c9G7q zoS1w4c=k{m?E&%AF|mfH#1bt(jwUD=9VCg!y3Z*Z_u@LpOCHGsfJECg~x(U)| zyT%1BzgVxYo@;h1l|6Yo5nj&L4@B@$;$5&g!r9aA-X|KLF^}K3Xm4WF2uc&dhq8ZF z8nIWu7L(DS^(1Uva}9H88gH^CvD16j{0BS>t3q}zf%m8g?1k>Cv?0AMXwh2MtL0-I zdon|pP}ik#-+2=Up20k=vQ=MnSSJg1yOdJv9JCCD62qQB5 z%i*do6$Wy%3Ko)TrUJ25Q0y+EXl9G{JgiW5+`d9^Ls$`WOmF-OI#~F)JOFE3|LPfM z@^-jM>%F^DNrekSY7GfIOhUyAhj@`voSnMKABy8_%djJvfcM{qNBc*Pe9Bl(LuzLH z9aia_2 zC+{U{Nac13S=Cl}*-bixTy1{b4?mwNzq?kbH&_W8Gb^Z?zOU*;2^5Kf_f~mAOTdvi z?y*S;wtYX&7?rC=1lg9P-nyq6&z~$1-nv!E?y06mv5-|R zYzX@Hi5PLF>z`0dw zSUy3AFb1~6hoDX}Js7&j@Mv*~NW+79u=28+wIN=%79njl3Tn4I=B(O-Y0f~p!-mi_ z%dn9e)_6#P(knY+(l{io`rWgORw@5m8@H~IGyLTe8amqWaZYhctaT-wz=Fs+uRyl* z8edZqn%APs(Zw#D5n`KtcR_HR?}@?muv%Hw1FQdCTdcf!{JFe$;Lh`|(4>3sa=1x( zfn>H4yv;Q37r%CHK;Iu!2ZHk`yW7xZLvnV!X0x`{(@*Wa_r&V+E44yOl4P{O@+{xg zZNb6ZDMA>j*$s1t`4X9SHtxg4mQR$A)*GJLx01ZjW&ApzA-GYXu&uGthpL!>ZFl;f z#%!odd1m&iDFCii3;~R^WkUvJwoEO?e6#eQ-B=BJfc%yq@u##xsGtj+W+=G;ahOgA zt}2Wf<61Th9#op^RWo@L*-KdbT2Ot{RDt4O@|4CgPcSS8`jUU@bO+L`Tk++4bN^=F z{B;B8Zi9XM-uka8&;0dYUQe$&k5F4|BDTJ1OCR-&%Demhw{n9-=Ur=)o}Inbwl61L z?ZJ>5m^rL!KD71H^2j2HG68jMA@|B`-n-L3gK@kW;PJ_Dz<7B9B6?+rl%#+Pi&Lks zjm+<`VvYWGcd9#$>>1;=SP3tlMxKto?G zH@okQnl~HPDyGV^JkAo;KRmcaU)1vvlDL-|?P4eW)yTF6fi1CbfbTT({CLq;)}^XO z;w|R3ow`zpx{Pd9#8TKAJN(0|Ut{X$`mxB|g=jKPZCAzV%;}!{os#c`+Kn@6w?KTk z%HTvBG-<7YwJ|YR`z*t-Qh8Ms(S1Wq9<3lvLCEJ3B4BFkAaA(ia!`fYRXPqY z{WJ48)`=7+Sh>+km8s)fE&uLF?)>1Hzi$D=T5RGraAM$^h_|2L(eD>7Nm+fq=zQ?z zj#^TMTmidE8Ld?8&tM0(gzse03qL->FWmoxgweiID(tYpn{?;QCI#ghSM-oM996u; zxkH^AUc&ZwJcB6y9J^ItnjlFtIH>zIN#+$*&ak^IJ-D?65y*5IMC6lQsgig1y{sw! zjd_)=^P6d4orgU)LeIkiNXXSOe%vWOPHf%?n?GAaiedYP$Ty@~RC^5whZNaZ%}3q| z*(YRwdsulmL*YEucvT?q$RZc>83+at?l;YQt8ZG8=4@T#%uhfrqLqh7^Jc`0@i_^Q zKrBjUey?jeJ0b3u$`7nA*znRe%$10(`XJU^UwK8CpM z66`SA9e@jJl2u5ou08W2*BXdcQ(gsjj?;hwiy7P)5~s2X`a~+FcMtE}cNEL%K+uV5oDf`?kwEXl)ZUQYw4ap{wf-1*18>tx8i5@&lzQotjb4fi1ytuisbE?=x zW&7e|0ga-0n2&osA)9TPY1@y#@mtjAwPnW34|Cx#iHa`gYiga}{0Ok`Sp`SytNPNL zAz37btuu*(QWqCixr-5dTV#>1Ot#B6mmIbw=HjnB=2@7p-6XO6NvM#_2d}Tqi{Eu{64cxhP$p2m#6TSmbt$nm zUw3CM8EGxny>z3^eWQLew{|SA>{l5W#Aw?U6Sk^Mjp~-ZpE@4fAA5XgsFVCFU-r)S zf6*uzZkpr^UiD4+Gq)8o#1Bb>VaLavd>iwo&Nxyqps>wqj^_}88wgX2A(sTStM|ys zc<6YmR!U8L%~Tmq3+!$<>Ot|}Hq{}M%w+$fP?I=WCggFD!=GuRj13o&cJxBj<*x$< zZlMj_liPHI_s3ttuC!O^t~C}0S)9SzwUiv#?y@u4u-}YCEUB$84rZ5JzkwSGcJ+e2Y)ki$oJEAjJk0WUDFV3 zTh#>hZTPizsvY-oYmTc@+*Gg6mdA<&x+{hz0+#l zoexB{qO>cFWV+Ej9F0tz-Nl7H!v5TXYRWv$ICLj8m~rK$7i6$b#m%q+axkK8rrYMsHtALM8#-~ z5BmdKAGX5jJbe&#VBOL%LWdrc{`DHL==ZG2{Vxuw)urdU_n$tgowr;N$R1k~`24nT zq(!H4qvnP=YuoZr*ahZlxH}k1V%EBRJ2P%OqlJH1vft!q>N`QgkCxx^9qJzit>1+5 z_dd+`s^qK2aI8bp5h2vTb5w3Cai}V~3RxjNn0WEog;((^JQ-^I8|Td2Lqfh!2CM|e ze&N|n%IYXx3A47hQa&wKIgCD^jh!vs4Ub)g_Plo}UTz@c<#%TmWr;iT)$H2*<*1#q~*sd_Pe0dwnJV6UFm z(xE6|hVx+y(dBqKp(GitLov(1z4PuY_2dZd##y5jbPeIHzV6I&1PcdY_2RC*5d|C{ zoT-vamsAyYf99f=eG|VNeZG%zr|keU!$a2!WT8X#~*tD-Ton9FY9E zO(<_pFc4gqFc>&>sEB>Hr=SWEW`p9k6+=MJ&7_SV4p+>TYr4wy55;{b zHT-39*n2SGWC>cT)q2SWAR=hnd(I-Ck04^<@P=waY*get{)ZJoC!lDX(~&P-`(u}j zk=yURuSjM%1Xi`ZP8$_eOFmtZHHJ(i(>E3n1m;yTJohwQ1YBJ0b+LM~r{aar;Kxqj z##BnAL^adw0k42bQft#~zU6#FaxvNu(Sso(Tq^cg3RLGdSXS?UZHW&%4_INWUaTw zIOwdj?~qiIW4(O|5FSL1`zsS&w2jN6n>y!4@u`E+&`?Kd=O+&%kFw;nPgFNYTzqEw z_SafBB{7E148WnVh>0;5N&dg$H=Ao4y40Gsy8HaT#yK!goqhWasVjw z)={{+(xNmshNM0U=5b?Z*Ji9WHwv2>c6%+RI;-Xgi!lw8j_e+|*UYfis{@DRgqEp? zB)MSjVg2S_!#N53cS6t{M;=gtC|6NyT=`|GK zP|%J}1$rw74Gtgf3{5G{`PQ#EBQ7phljBbVjpCMKQ5V|L%8kIP7Wu-KQM%{$e6~g8 zXzd@OnxL$c(wF+b8&)*Ut64qY-<>T{|6%x9HEPZT#39Xu=Htmgf0`#l5a(c*Bz$u$ zRL$T33?tES;NnuZdf+H53{mjBIJTeUJNHT*X`IW@9j)$t{~I9EpQksjow`{4{=b_t z?H3b%SG?~OD>?vdyh=de;8>j{!4_G1Ir62om>-{Z(%0|RT(dMftO=6I#1${pyz28* z{c|EdF>MKI zzwvzzy^?y|O4wrl_SNp)?SlP(ewOBL5&XlLGY1TM)ZT^9CJaTSyrl--v>U!BK#afE zAgBR(Ve{^KS_2QXZfw$RGz?!(3Hdrbi7K%3M~lfXRdNcd>>=2;n%%c{aPfrC_m#g` z5FR@b6zoolvD;l&S_yKxa9}H3O$pIr{B=T|#?@7W+@Mb`#39U_@h@c}-AeD)UOF** z+Es5~Shu`4)*F;;lrio;lMpdfj^($I+y%Oi3>c|A3cFFNMrl?$`u0OvHQI-}1mQkt zLEtK`8xq>CaNGd{g_V%N<|bm+-Da!lt}7T-NTP^~s*6bhp^v6(Os$gqYQ_n-H!s^} z`_@#gs!f*vG73qyjI;)f>BAS-5!`xD5Y=n;zK&VgDB_G%#Yu&TJ4Sf_gI`HbEfYGi&+qhQd!=dlt-Pi^T6JHl zc$&Rua{)b+NKc!oi)ula_0#EG_IQ@yy@EN>i>x8(*0X(A&kubu(6YMpK@OQ1?4S(P z61vgbSTU$1e~*s|#{)3{1hOGcmtp&KrQ1Ivlgsj?K}TmzXFkNeA7d~fN3ISDV5XNH z3bbZEIVAq?*g=!0YuK~y+XI@!3NmC9f$=1<#|Iqz*MZ#xUx_g=G|`j9@p}B~8gW@V zu{{`bnex%f@0t0^bLE*n$Bc1^#f`~#KlqhNSe`%ybz?Qm%>>d$IqVUfMXB1a86({a zo#A3G7K^bgOE$|Inh(kPCv-w5?&Qx>`hM{&ni<@>cDmmW0c2myKX&+vi_daGVoxt05-GjgMjXX(}N|1Qttr{o5$v*wzL|@1{QMM5UwGBcN zuq1ewon8#px*N*;KZ?%7FR90E!}e|1ust=+hUVT|Q?qiX=7Jn(<(6(q-rh0DxB=vX?Sy%f(!zXJ#D%`J+Y z5fK&iR4{iau0YMDR?kv?ncJ#!7SmTSU@)b6S>RfHsZqb=?S-uHlo|9i4AEP;Ga8bB z=F=httN|-`T$W`_8+zF6;)Od$<}{CgY#(qRc$bz{9;&%;PPyW6r6#ka*lm=GWi#8E z?hwaUg&5~)D<|yLRo^xK?*VQOaKP?q_>{Z!r3XIO?}+kFU<(pWZE>$o6Wto$-o!4H zzWvusAeL;9fwfVe6uc2WU-@9uqx#wRgTfOpM}3Op2gx-*=F*Yn z9U#1+5;^1x{n(A>ye|W>EjP^P2gmR7+^n{^d`M+rxtRSIT#p*{@t^mG^C2OsD99HdIz&p%knRq&}jr z83=^%;+BMVN-PIF+7G`he=c7i^s_Yl^Q{T(2`w~H;{+5RMQ4|A_a5il>g}L3!wKZ7 z+1aX&rK5Js4@;k`wq_r2t@t?X@!?oj>-cZYBL`~1Mf#Dw?=rR`RRR7bZSsHR5w!1`o??1p1VTAp`#sr5%XC`XVjc9d2M(@ zJ(or9eBgbvR(;WWG6%l5y|MG%ZU`&w;qFI z4%pATa5oCX=%F({$=Ve{=YDLW3)c1AVrY=2#B{`d7NUtw)Fa^ib(c4ydS105XG4%7* z8jC!Kz_u?QhjTm|OKt8PES#<}xd7mUiyRJiearTBY~ulO?S~1^Gip!UK0Tg1(V0bH6hKoizH$t8?f|?5>7d zO*7f%)eL zqml67+dFba$)m1jlgVekEk65LyRrOt!dWa+4YL*P9ZN}Z zX7vhRF}D%jurV3X7?Rz-XOi?={k&!+!bPECvvceQO3d+>tR!wLWAq)fd7O-NM!JVY z)$I_BeQ{RMSx8YkZn(FwSbtMaLo5<4r!`6bL`D^j_R!jlYcPQIb*_KL7YjEHyN$E2 zT;9BS)cSSN=3v^gvu(MRh1~{niNFyz1-H|-c&c@7fw^+-cwjq$(G5Z5OO$@smTwC1s#RS4Q zb)o!xizpg*u5SfTF1@BPjJT9j)5+|_AwXfAnT06v5vNj-vp@K4Icc}EDxK%fg3(&) zAcoBYdY~0(@WcMOUAy02Emr5^PS2f*$UWoiW)Aj}>@5ATqiMFDbtqKgxn-`a@+|=# zT2A>3wW*HtX$E9{hlKeU1Jvx+LO70G>jJ(14YAD?u3ewZmk`Y<+3$5;gDCY{24B-} zUn+Z1)``zg%0%wk!&F@dk02_hSR_yP0whOi{b!(F-P6}kEknkIQS}nRSFrak7DhyL zqI?~ivfwh-;^)kv*kT53Xl$|s^#U}yAHD*8-1KZB?q;)cJ!zwDW>}f*&dLY(8`JHWoZcd4! zM8W13|*Q6|03V$Yl3`XDGR$y z-tiOyIPTRx%9R55ht5W7N9wsFkXRZZ`pE5wc7L{O4pTO(MmFptfagbn1*Z**%Y&Nj z_+mKe2)%K`gx!;fK3XB9vn=H~R`?{5q#cnaKPP-S?DYeA; z#8s#EnyNw~&tfk>l>G7Cc&#?zi_tTX*}Y2HISUy@$9`dZ{|zg6JGTyR(Du7yteT}g z)TVt$&jS$=33>j(Yv=hnV*0{R!j?_Z@kEz|uiuY6?e58R*9Ru3&QU6z9sQg4rVzc- zNL2lXo6Gw1ZIOr!neUH2CT&+ruUcjoDi`|@TPvljc#s`d3Ue3ku!mXeNan(zK9Xfg z8oqAkAKEAtmuI}wLhSqR)!z6>@zv99eYg$Gcr`=y%h#4^@VoAH0SXBe&>$pHJ?&MQ_5B64y` zI^r7mtb$wBq8afoRA}}G;*0f*XS%xOv|y66ig|1#p9b<5zUKAjql<8SP0Dvl8d^y6 z=A-zaaEO($vHG^2Q@BAUZZr2^;2XMrd+UeyXbr6_6{!4aNg_Q_Cn&|DCHwljp2yJf zG~k_}mgqaJUQnyLPW9p#B?#7n6`R!i%;)WTcBS^pKR+vzPiaIBE-kyMea?0f>s+#M z@*iO*Vgc$a^`_0@XsP+hFVW(~J-3eb8S&F>@#sS|J%^j4HJG(ou=7sfmP>fOs{z(l z+R;k?a@*b-l~d`nYFUK`Gd6whQtLnFu@}%Gx3@l>#V}sgT%B@ysZyV!+Iiu>FQT4L zfC~P@B}Ij){27e4K!glw(fXO;PiGv{Tq9kxqg)Di{23z}b>PX$%vnucn>Rwrgc0m$ zWkYIDyi@tw89aDa%KA|V zK7__>45vGT!aI5&WX{-slO9gng7gqsek^DD>!S}SN{_A0sM zfN&QDY7wGb7b5=MYTB&9nRzw*oqXezcjn{iDYFR{NI&RqKm|?Tc^w#%l3Qf?069f6 zH|(S{AVa3702$VxZzoC0nn2cP-w zEPR?P{JF|^HG!oZVkF0&)Im9u)A%;NcDz49PXVu3*Z-KO%tHukNnV**7~^$pS zOOrqzfz@{^pL00NBEM+Qr&Wb7ct$?ceDXN@D<5aQp1^Tk2_v}<0Kz9Jl|HQ5xD|sK z>zrCG-%cm@5~90SmfZ@y7g6v#BKB#uySmbeY6r=-N#6>2gwP??!yyO5GDBK+lk|OC zI@LG8fBh|}bJUdia_R<$pTxEXP{Nu3QQ#)p(EP@=1hL|-Ik~vc64ccj?<~x1FQh16 zJ|xdNQb|9Ku9gU8nWeNo_=D&U6);yO@jzrW$Yf zO(T2h7o7X_AX7u!fHR*@LS-Hln97=^Uw%$7IYoWq1Wz05ce0ONsky@Nt)s6mGS_%R zJlVI{5pp(dJeuDH4zG*N$Ku%zQ3Ls&P4`9W{&Lv8nGdZFcpdVDJo$1)fFEtiIHir& ztXPW*Y_36rxGe6;3?Ke=ZXPJ>zV(9w`HTU9@ku#5r7_!;3JK^iNMXLcpV4FX?#hJx#{-@^g5kOo zS&lndreb=u^Mw#5lxa}5#E%N;=s>^>Zyar~X^m}lUW&~5(=Bt!>k2+znIYB397Tn{ zEDh0Kue7rm+CbH_73*vyIM@!wBBnO8BiweQUD6x1L*I`}EG((5I3XJ3x?!MY8%ykDQ`9a24b;H)9vwfgm4_0Odhvb& zgpd|qxtQ}ZKJ)jxs1-LohFeWt6>FVErJ(bz1bg_#+mIHbBbMpBLEi&fSyie0@W^ay zkU8+^mw^1}nWBb4{nmld!HXhTNF1t)%WMjt8oEvDC?rF6I)>|lVbu@b=|-B%Smj_ALcjQUlqO?mZuup@?b(nI&@bee%O|KkB)`LaN(So^;O0%G?Nl{`g@FsA9^R! z$)Lz>GF|4YX;br#LlC|7b@J}_E|cSGB?Iqg?u#D8lv32p4g5lIk}(RKl}#(L_Yjg? z6Inl_6&5gNJOeNcKJ5$FKBp%fo*;1$`{!ko zzUF855B(tyg$aB)<78trj!yGa*n^SgJx~{>?FwteZf~a`W{%X19vH9j2#QKH()m-vl3QDve zJuBl?EsI2ADdk4t^}Q)*nWN5z>)$2(Z$6dEjyo=N&UDo8IPY|8 z&e(q@a(%VKRasfeCe8(Cv@L=Ek)x^#aX`WjX3b#V9Ha$jd(mu&F1;NENwFWz9BkXBC8o9K zF6(b~k9iidF5~j=7b08R);c=j`gt9nR^jhARJiH)s}Drp5)S>Jz<;8vi~6nqP*bWv z+9x89$^t5{2Hg3TD{wGA@fkDH4PL7D8@d~YVd1cZ8DiXDYL~mx>fYrs2e`ZHy;Jtm zHiib5KZx6ws*q{=;KH7rku9gKHD(;(@>)YW)URpM4re4+Xz6Zp-hU%`-lj*(>C;e{c)XU~kEaQc~dKOYTYc#N|f( z_ucbKW01q;4IifN5(EY)x3t9{h4K!Tu9-7I{%=MMhu-is^wp8)@= ze=xnIfb8s!&Y$Y|%Qq?q!=l`%BreUGhG!oA z#lh&kYhmp;n(Lc?FEtnb!YyrkbW;B!9WaC13E=Nt2?Zgk#z7vZcHWmXHp~V8ni076 zhs$c-pf@K=U@hHBE^kFbRilYlqt^Dq*~0_)gtCdVg4vrEXBw&p50)aobnBlEkR2n@ z3WwlqAauIcEDs6o$e-O7K5r~rSD*4Rha(W6GI8+hLX3@V28(dJ5U-Y%ZN1K;vh~Fn zjK}_Rk)BNl(Y}}Hkb(lgMB*&mv z0Qs*2UJ&E#KMG0wU*ITC{gRc!LL!RAry;k)3 zk6`gi)HD1!KR0s%Q>wX+w1FLZUCGrrf-0e7nfO5LF7MzAF*C^6&f9!uRM>vBccu-h zkhKS38mv_0eQrH9B#WOM`liVFStBfF^DuMUQO5i>YJmqX2X*{?6ZUUm)GptYvAvH~ zLtiks`!>2#>uI}Pi?IF7hwvh{ddXvIJMgZU2BW{4AeD14vro_sLMRw6x* zc?_0gc7A%|W+S>U#MC-I$! z4NWgDc^|BJu{Y)O#B5sXmHwbV7P;73l7*)Zy7<8%BqoN+mAa}l>D*q(Ccqa*%s`lx zpC_xjKghzEmsbBP`+NKaWPR|7eni#Zo}!Xr3`PXI%ZQ=2dk3ue8OtbwxOBGCe5(a4 z>zD^Fds@}A;Kl(H6}DmLpR`!16p~z_qUD1;2GOw3ss&St)?gL7qtR=BDisLjTkljM zQX50c!q0;9ylu0-988NEuR6dlS$0OAr}FQ+aSrIp1B-3x-I&Ta4?j!A#u zRqsdr-&8+MX4tsCOjBgRmwyVYk86Ee#m(-;eI-dAuCHGM;lcrNlk5rauffM%2IWjh z7vI&MmY4H{U;6+(nOWLKY3VJH8*z76vT>u~#@?iw>s2v%0Gidd`|65~OQ_u*etXXR z_R8Uk`$6eik$;1=9Znv|^w; zd36JI$HVBMRxvr8h*th1pPUc8_1~h4m8v#!P0V=GZ-jo@z(jFk^+oLwfpOpK2YzB9 z7iBZ-UMoNr2ufwW_QyiVfI8dW!rdDF7YhRDVHFj3ee^m-)Eco&^}(e--uhdS@NNvz zXRR8d1v!*9w%Q3khSvn6-sYmf+fMDJK)7O({J01@zu;aEhv*ULZjwKf`Ncn6%lZ=a z#2dhbnMWc#Lip_8^oUfo1Fx^h_g}fv-3cY-`?qKQWt8F9q7X5@TT*?>Bz5lK+Mpf=pE_`?c zs9uI|#h8OD*PY`E68yyp{&qpOQ#m=#8Ze6&jSuk5PQ?Nu2PRw2uc3i!!~0@7W_@aXzraN|RH7T_w0aH+1mFj?$AU#8Jm! zE0bExD1Tf4T`Pf6-CD-n@HYM(t-S*y#vY@c29hGeSOJq8hwb{sV7 zj9ODJ9XO6PZyDJAU6ub`>>u46d7fsnu@Ir&P+LElgfP|xTjYwBFsK0b(kwf)Vc92x zXP8LU+!rH-pN)nU%{2EisJPzsAz+8D9r$@MRKiOh%2WB z)869}wz8(DqTTcOs7bo4Ya{YPSyN-N`>H!!uA`$BQL#z0C4P=ON$-c9s_}z}jr;2& zGfR&>3(_nfH9Jage^zI)sWWioZgou}!rC9R6;oW<^U*rokLNG9($ryZ@wlfk{yW0Z z??MFvAUXu2zz23ffw9SKmoO3Um;cgj%u3_V&*?tIg=$}O{E#Wnx2@m*R&(Rg!}tS5 z{s{_$WRcuz``Yq*CB|2((E8pL<4DRrCya65KTJi#Pv@DeT@HIBeOU6a!X*Zh-i$Z+ zY5z3vLOmq5TN`{pM1B=Dvot2~xo=ea%Ywlp)6kS}cDXs(0N4gFi_*?O(PohYg+X@F zs8hU!oKiY3eP_$X`VFqmbizg4z%X0;1TM&9<^oh_S8db5j=dNai!P7RWH&&wQ#P7+ z_tcyCfxfOoe$mVPn4+9U@O#SB|Evv(rJWHvl1Wv{a^Nand@c?K(ZJQN?2>gzMT8Jr zP!5!spNm}`Caw=Vm8a-PX88`?WS)O{Cg@}HueSJGahF9sw;e)e8_fv>q%&*;nfKPJ zG=I_Eu&q3t4j4i?kmd?E2@IQ-8O#nmwZc1Vw5`Nh`m>GH#OPL6kZOcfS`<~)PhZj# zV{K!F#i7S`GYW%qvIBIH!_QfGh459LyfGyB!Yk^7)1p}y-+lJLCTmMwk8jeqdH87Z znw#gEr4@Q8QXkT2>9T$CN{>=zT@{6e52u0foCbxTNdP+OFY*R7HR6eV7+O#Bn3qvj zwOTy+V9V4ejn;}*Y&MBD*_=X~VbR&#&yz`$X|3li_AZVVVHfhj`|>pvBVFwtqg>;M z9B-5CsY3#q=r9bkQ7h>yyHDtArgBae&K z6c-)e2#i;6fd7ScpEX|7)(5QPgTVz8z8a}nXV zzvc>0%<3UGckWL|G~54IJl!GKYdhPmtsm@$l${G$w6+D{)Cl~JHXwz89h#tiA8|fw zVa2(S$0~G+mF^|&sztEdi*H}x{AV>?9C8r9N8xO)&sSPBFao6+UU7|h0(dh_wKB1U zE2qzkgD%qe-2~P<4;<6~be+yUaTzMac+q|1$dQ;tygf*BQ>hZ<+DIW^2t>dPen9!Y+F3Sk6nlU65c>N=K}s-i>UO@ zF5$)LYc%7rF%a(vieIPBN+H4-Z>Xn#<*@dIkU2hli{*KBof zF!T1p;so1x=zjv|IBU|k$e1?)l`V-BEqCk78v}i@`*(keMz;x_IxrKEJ@r=AT*q)X zmoKz%1D$$^dhGwWFoUlL^xOYyg|d#+La4zQ%v36Kt@W3`n=nb9R~G{Sw6?Wfs)C+U z)f715E+{PZPIp?Tj>4J;&vCs`YzTzhygma->TiImoH%CfP;HNNH2S6+!U7C&=lGW5 zXs-FP>6^6^GZ>!Brx?deB?f-qx{3eDeafQOOg`CW-ik#$Sso=id8_Y?$47 z?iv-=?`}DVCSteNJ7BmNsDb_A*FQYwyE4vS?Z5KvQ3xtms9dRq0VVxZ9ys2vGFtjbh_Kx4$Enz@4>d7IXf7beazR|7o!}2a?qbl`eJX3tT?K}^?Oq`Z0H40G4_=9qG zoCYZRi#E)WIYj(kFE;;Kn8!W;JBxM}+irS1z%}L#e6BkCsjOaf6bo&(PY5=%1Ly-gO^Q@vg%whRrjTCu{Lizz})i>ym*sQrf9+IvJUdwWLtvw6gZnw z^>IzlJd#2yZ7l+G@68%j_mBc?qc=cT=Q7G3Y$hSUdIXEn7?5?@E}@Lt#+NvuWMTTp zhIhxt$_BNp&l7^uDcgY^5J;Q?gjN+%e7+KJ_S?T2T7r9%py6m8BM%4+XB44u!yBiC zqQjTE$}3DiMih$OHzK4+b2x3rA4aj2+a`uoBz5|~S@?@l&jxMIH08^H2FO|M^*^qR zZGFxME>3P1#qEF0nM7M;Apq&-A(dDD1)fdJO@m11ocR$b>8Ya^1Jfp+p7+oTeqZ+0e?Oj*ZHT6nZBp{a}KY~Vv5jE zsC9i&w3z%!=w3-`&Hb~^zmcLblCsbXhHaF8>l^kAC?#SeInJjnIquY&))KL_d|l2b z(R^VIskm;&LEn0#Czugb%lKmw2YV^iry5*1|9$*(ORYsvHUM0BK4m(sB)9lEKP-*) zTDhhq@-c0FEAPma`uh|;*6Z0hMjHC^F3C1)XhgEfz>20G_eOIY+ea_n?m~e5A~*`1 zQ7!BD$=xw4s*{s$W9k}Mj|ls*L9ei_4#H!?>BR;2Tid#VzI3rUA;*4c zV3hwnmOAd>VXYMB-KwXr^PJYhJe}7$u@Vv4KV0X2(b~_XVs3Z><|n;EOG8nZR9q}R zh7TO>|A`Z9GxVzUE7jRFs*H%Y8OuD#NxQFZm4Sy3HMzB&FAPGOFxQ)j zbjH5Y`BVL@Tqsw@pUL2&Ee$|#i^6KWwOc6_!L5Bp3)x*SI>zfrI?n;cqi| zWfx~I8OUe3pYy{7EkP!WroYOx-FW=nBT-`U%iuj_xj^3>y1xYgke%@s?6fr>n_7i4 zyx%#YlP7lzAyjwS0&Cy}P=E5TvRAz|t9rbA($bRHHnK+h){&6cA*=}XT*8vCU>F+2 zmUB1X(EIYXHieuY8GReSA}n=iT*zDVine_TsJ1uPWvjlB-3#I$OKX-cd@iU5JACVh z%MPEf-K%O!dq(%us6tyt|DYJ0o^QWW^yu|_pTyhjqluvky*J;ErzWNf#B}mzfi{;- z>OFesA;2apFkj{AGS~5!G~RXRVdZ6jO3sJEfIIj)Vx%3B4OD=;{aW4p7pI)sQUS!p zm1y8fqmmxD(&q|8yCJh&?w~j z@rL!?h0`C#ON%|kd^vluTDt=gUFNGHh;=~o>;xg|^7t^o@ulYdNzUsHLl+ zy8;`$C0yzi>$0!Awz?ZQ8Sp)x?7f4^qYaHXZ~MMME97)};aMriGu4$|Dzg6`4lz+F zUT#?%kYRHHc;-BMymn<}I5c2U)SE%kglESOYG+P_D{@!GbB(TC5j`TB$lWiIP>e6%&n9l!JkdD>A4fi$6bT^ZJJRWF z;x3lX4AV@3@>|oIIsBCelIAW~+&?u@aGWi!sU;`>L@VdIEu_%cx-G~4BJk7LeZ+U@&Uf;vNJ{Du z0_;rR+lyVSH0q66W6CMw*&S2iOW<$a*W|us-3_ljWK*O+Fs8r%elThxOouDYw5)3{ zLu8SrJ;5P0GEQhq4jjX8m{70=+YOUks`v=We=i)zwe?!JTnr;lyM~Wn9I`%XELAt; zQdJb^o^KtMdyzrTw^ZMYioHx-w`{??zezi%*nO5R_;vMSL2@vqDdXql^&sWb)%Kq% zO8)K4R`n9wa@TfWmBhL@p<&=T<_;IPhGNBwr`4Z73c0Rz%0o^%-RnTh0426SikzVb zl=$4p;wXU75YoancrJsD{MO5~wjL~~n<&rIt zRQWoAKUroenTHNFmJC%thr{$uJt&8*bDUHBwBYVQxD;i+Dj$~*@HkFs-698|<*Y4+ zY@O?zNAX}hIc6cW{nn-z#H%V5dD)IYSxd#8W%`A4ZoC>1w7)8P;g&?$^ua4q@6(-h zES7>&8q*L83_qva`*CkQ7~j1$Bm5(hpN`73YH2?rI{Z(do!Ug;SEc^U@u$aPD|`K( z>LYg#7ps|zzS4RP`3jWq>b~>NB<64+48pBkEaZ`iI3le`-&OMYsax|J#Y?l_F0E_S zXmP|A3sXs&z{UW!{t3F+^!nY_=8o`)DfznfSM>!?6TGwUtVD4JOa!GaP$=A$T?G^p z#OwI=uaD2RyXT5*Y8zV=+ZR?9d(nL9J-v=TxGd#jzbFU~cEDT3CS(K*S@_)d_)MQ} zLhm(~JJ5r7q`Z8Fc#X6{EW6j5c-mUrt?Q|eW#REkS-E`1N|&QdHP)BdS~}1hQ#6l+ z{@c^Mx*66Q)_U7%I4S4*3z(8UE^T!tbUVHXRJy0&Q&j?Y2|%0@PYTXe&i;A-s&!En zO~KH2v7!$XX`&0e02q35zP76-4 zn8rpI{c~H`ja&Ur2Dcr{Wiv|L{p3RLHHAX2vW=Gmt7`YX-U>xq4Wj~u{=AygDmXI= zYBCQpy8cXc@ZHgg&@?EoVz$e_XE}v5shL{UuHX>z?wSG&Z@9FjThKox-nn^}igyn-`pMWpw z;t_(LYXDkvY8{rl4ISw!DVMa>lE_-Xu|XPJ`#JK?W^SJEAG~y&ij&NH&Xf% z6Xlta6O;iGA0EQ>BFX7kswD*DR`Mp*kC?Yzr#BBNCA#g$zJ50A<2SCX9_snxsNBj6 zO+4Q7Y4V*@#cMNu#wcKa>>M|i${*p%`pj7yR{CLETqt_H!R=^8#)I>Ezg~Z4Pp8+y zO?tnZ!4q%&S(n6xamsDL>ScwTO1_=osj)hR5u+5NG|RU&0e-j2JTovpbmPkxMvFK= ze<%IVU@*NhV3DmBh2YztSh1kvap^oDmNUJz!ISyXcfwrP>kUxN|*+_@UZ;BJ96VU(I*aWNWTTmx*~8k;qiF-Qrp(MQPW{f zRYC1>?(u;~uOYPoyL2Y1eLj^#;Y>JqNkQxF$YvFsp&B`@)xhR_UkZkZ&&gLa{PRBn zimB)_Cr5R;bs)q@=X&OV(Y&o}u(@eIi#6L^2qX7`)XCOWDHZh1GDRxby)1?xhrSt| zEMXijEIwx>nkC2*Jv&I&79{%A+VPFq8IT-Xyls6d4YMRI?YHo&f(5&A=_D(pSqf#LTJAAU!WF2QW5%r>H z@x7l8 zbg!uFGoPRC%BKW(q{IYcUq6`?R>xX1Mz-imar41FwP~Nw@SmQT4mfv(gYEv?cD_sj zcIo+nrfQv^ItRsHjL(upz|g(80^90JM2uoKd1Bjlje!fT6**GfJR7o3QfN|K))5fO zcv0+=UHo#(C#9E84wvU< z9?oJOt+Riq>mdCUB&{1-V^dUgUQUW5Yhnj3@ZY2Oz(~}!20gQxD$VQs(8S3MSeSqh zy2Jmkx*epl7YcDNgU9?&fSQP*o<}ykmv?EA%`lS;Ikk8sNbnZIztjs3j>`|6pYs2= z6ZodHsx4$BL8MSmXKB z&LaP&-~4LDX)_OTd@o@!gWR+8gSyCZYJvWPXw>vaYX_P8 zY|DZTB2j$=tw7!?c29=J2^|8bi;Qp<-+z2Z$a~?z#l$}S_NooS9Te`0^0h~Y*J7pT zNG|*0T5FD3g@y2*d3P`6x(V;!I@R{DfV~uoaeh5^IOsr zbr&TRLt48Wrl&-wu_r@j!xr*tm=HF8ek50T73Eoh;&|8ZDQv|aq3psAa8hbH$36?& zMst2@-@uP8e@i<*46FY@ZMSjp&)*f-W3fz{tmmx=mHn|ScLm`e;NSDtY{BNAoD@cX zEsR|hINNejN9thsk)wlx*9&Jq{f&#|SU$+z-eYj^+VfqNL~6bqk;CZupTP8nYv0lY z491<@Oth4H!&wxfasovjZ~`8qekL7Tm45QLD{^9+LdELAC8e1my+H7;C9sKq96e0; zb*pa$hhUEs`k6ZLq7)#oMj8r1W1T0psfP)dS@*i#%`!hD)R1@Xde6xb_UDNgqZ2~F zfoHM+$7hHoTo0)|Z;s#|PTj66vrMW?3Uj{|%ZHVSsImuWZ!V17uxgsBG@c45vl=F? zthhva=jqLIo@QLh0|^y!rt+GxCSwvmzdKkyKjdyB zc;3!{LaIe*7Ws#yd0eUD)1(HDF|hW9<=$#n@af>aGW|7TpLJqzc%s0C|LT{st_BH% zMxGz%@kN5+<$a(2kz(g`;F@D@Ekmd^yluVv)=VO{QRl^ETC&StqVO zI%gw$*efjP-g`;=R~O!?UX3r6t2%4$*TaC(+{#K5U6GiQ-1UvDMjLM)_Wyw-b~!ID ziFK)sHl_7@HbkL<5UlZIUZ|6bS@T{5g81?YR9bA;# zG~oORnQrWb@fc6mz8~AIWV9CGunT$>UM$h7M0>#J%iMdY1|7G*kjm4lDxGtDG%Lmd zs_VsgiGLHV5S%+maj@fm0?!HPOTOZ#ct~BY&F{c4U-@zs;Z9;n)rZPlJ0+d7l1;6y z0n)(UcTewo)lEb|9wF0;`RUHuiN*4M9iufry;alN7=wp9ZnAl@8Ao!&bk!<8A)#09 zfjv=KIbQQ&djYX}fA;C6$N2lc{fqJUFqmb{{6N^@lBt3!XDl|I)YUD5U3@@Neiy8L zGVwrbf6Us$6sUhq?|B*fqSO+d0XLo&%$)Dg+m7r=E4LT7QA||T@lVjHF+J&gJj-gK z7^qvL0LyZT6u<2n{b=*$vWK1b@>F@`UUHqkH%ssD$@=c+U(c3#W}wMUQ!= zWyJJ6b~U(kdXDGd`iztkVr?!N!&<>Inm0_d3%+IL>P?+Kn~Yefr8(XlzbNx_!PuCu z-TSK!iEnKpfW&`9X|_HUiqw6OZ;KobTJv5}JmPle%vW1Rz$rajQBO%P zyNfqs6#w=McF=Jy`XUP#R7$@E|Jc!0I(uYN-b4f~2@j~4h1Xz_6J=`rjZN7rMzkye z{EI0?u#Ce-syz1lJC!1nbXvl^C(-(G1td>+Yzp@%1!g_e%=Yf)S8Bu(B3;*gx}tfY zi-`z8Te;t}x=vZ_#r(z553LofZY&ut4r0X)wBL^ZLew1myn;Hxr7nz|(7aay6?3sJwYeApw_Doldz@!0SyOn-V}|AZ%`2UD zI9>>SeH!U^2YRAQxkNTU9OIqeh6HPo81rN+4Uj|dR`YSB(<8LY$hXCuT2ipT{+2y? zs1A(87+7rmNWObWp?9<%gKh%N5rSb{?pO^GRxP%>I|=kB$(SZFOytp z<|_ow{IzYKB{#w)Rp#Feu(F_~hj`6p*cPWQu0`yfpfaTXtS|^C-K~vN!0`7~&zwMK zYPD~{4&P<|DNgel_QqgZK@?_DIJpi$0}-GL3o%e3H&AMJjRjWZ9l$QFvR`_Z%C(G{ z^$U+m`by}(x&y_Oz|G*_BMg8!W}0RnIG$2RG_|F!d=INZ+-91Ebel_TRf-3rx^dpr zd}k*x+C6i;=SuZhwZ~FKyTyg8=@t&PAr`h}E?-%GT1^Z`2zp!pFG%eh;8Jt=_QT7| za~oGKah^MCx6Kro<}ga0MIJnx^F{vXEvbv0ZjOw6!<$v@5(_-Y2ovlzO=q6&seucJ zbX(LfpNFivId_A57+HjNCTOE!{dUr)L1@+N>RgbE)2P*%gv!wC&o5{LGal|QJrPy* zl+wNti7u|QHL0NJSeWaLxD0_AP^RKE*{)LN-YI`|1^~h~?ZJS_M9O-&{s{}RJm%NX zr`DT{p0gH&v$uSnICP&Km|&Lul{jB2msK%sOVppAts}PaEau&<@tQC@#Bp0IOD49E zuF&2vhpu9#ZWsu=HyxLPC%L>( zN??EP{>zQfU-U2Wtd_aKJZf-s_X0f_Ot#vFY@zUvrXbEhD>!KcF~Z&@pb!Y(?GWPN zh{@XHo+IIaAMZR4=O)QJOeWiX7Zj{UiR6ka@WN+Dc+5aNm0d79lrY_ktw$qA9e4SI zkDTIkwV#1ld&>2yMNJdQk1Z>|kKKG0da%ZA^u^f0%=kg;W3(i#Z;S1NWpL&^&b{;v z&u=KlV_6Eh_%GXkM-NOH+1pbXK6w~Px&cx9G88=}pOi6vJ-y1rj$yhqy*MT^y-tJl z$gJwGHxm`M1jQ?0G*FTE>DSGLa z1ax9}xVF+0V@v91uQGmo)NHt|D6gLe!)E(kHbxXX|x}oV#&*DhS1eqZRSiW%4Sy!R3e9KjJ8^pO5M3h#tGu_50_`9Bm1ojNM$sN!I|vPZ!C_&5Z>Pp8L@n$&u40 z(5(!>9iYn)y=b1VN~veK}puZFtMZM`uZdH!~`SN8Mdykg1oQht1# z3yo7UXd#!Wxh;51*MY4H2`&b2KT>8{;tg5rR}fjYK@IsCBNebWGCJ~FL7g_YL<^^C zoTJhC-V1arU+13NyapG$Fl*cm>RAuBp4G=T4Q&MyhB@kxn^Go95uSYup8u(QwNuut zIVmn?!O=c=J=2xqug>Z93524x=6yD|>%<&p5$oIYl^imcw^b4i7?NN9_C|75>*R-= zbFal!x!TjMfo-9~E2e7M{#;Aw0)q^Rt|y2cKRzqjSF#Rh-`K#;f;)c9$s-rktM3dd zE%fS*|H``eqlc|qE&t=v^)nUMLeqQ@`sUW<*wI$UMT~_UnW9DC%lIX2pAsHyg}h4L z9)Yeg+^QA}8<~2pM`C{Drl_=-Jo31j+4ynA;?+?>#1ruGyjPP$8+nWT@MzQsBdmD= zVp*_5r!$cVSUZzEhZpmDb&UGhvnk@Jg!->f@{MaO~4S)tJHV~gqC)8_rJ%{w3`x+=xlfv{oE{yBQA$$=wnLBM&AIzuk`+eXW z@a^3Vz7~3?fAo2Iz~fcFFz&S;W|<@0F93fWg8CJIS>;#5glgNHYXRMuHDE1c|zcTuMfTJ0%1Qc!sVeO95tV)f5F&q;heZk3I>2g<3< zm$>*Gbxin+246~wywa-Y2XS5nj2323ButDS?n4Xv7tUojVY%hp%8jcE{p}NldW1T^ z|4i=WzOg(qy4q?T^jI`N%;e~_y0bINVGRbO{!f4wtYb1~n=`h6G4GBh&yuzk+EQ_a zn03H2BglFS`LtACx9CvUANeuOV_$?BU-eHucv7jq<-&#QJ#U_mYpZe0xjEU}f6;pZ z>+HNu-+{sw-r>cQc~=P|RAKo5A778B5<>GKh!;bHSN9ik$GnVo8*%{&zFpi>S+2Q) z(!>UBFm@+F)c9EcO3%4~{*j&ynn@V}3ai|Sy!N5}Mk4rxmCnse7K@k63Xb}f|GM$U zCii!6BIkF?->_mI8FrB+Q)971juWHa5tIAYlF|9?0xz-087x^ovrb~T%{OF@Cy{uY zn5}^8=UmioCXXpyq|{a0UHh*?@$B2aRzWdUW!a_Lib?Gn4LNH-n)!ynnd+c zPtokOcM)qV+Zu@D81$j4y~*3eeweeqEq>NnH*YCCYQc938}#MTG0uN z)-SsXo4L^C_N#TN`X^kM^2$H?lV(YZ4OQx@eVH7CC%EFzc_$L2JR9=dPCo>C8y*&I z_-cW?^FWq7y*J9gt!Rn;A4TUL$n^LBaeY*}DBTp1E^Z;p{jRIa$lNVvlshwbmdhxW zO74uztzs6lEthRQ`9ZKb;!kb% z%4`6SaQzX~zwCMdJYcF;B2@f!X2jYi*-M0QX1e1{(ZkIm+|@2Dm1X4tgSEIn|IrDw zw11NXO8qeDn;o#*YYK~Ub=%d?GFSg7rIRmtNAnpUBn8+%7Oc9q=y9@cDghuEuQ^i! z1j%XE+ReGGJsQyUQGrj^3P}FUS!E&VYzw&+0Zce-5dxUW-f1~Qb|+YE`iI%L0BCrA zK!S=*Hhkx2fo#`VGg-o|&|AF{M#pI}JV)O__M#uT%RYTD0@wxaycaUw!(cN30cW;;mT=@ zc(s&$-|)`*t`3dBc%Pc<-Z|F`=WhB_N2Y$a>wcJ)75QiR(dcO}+1(uY8FUB0@^D;? zG1=bP+r3|yO<7}n0LzniPF2rIFt-PbgbqmysrTIK&>R2d^$u&j5y;X}k|SEf>f`x+ z2$n7#jFkOi0)5|^_F0+aA|lMC4vgz>{K;$@Wb&8`%(;+%CXWo-LcjVQJF@24me5Ck zAw8XyDjH`?5RC2sN?PpxK36`OL*2|x+3&j#VE4tZy*2i9s+UR0uGqs4+BiNE!4a{90*20yH~;Mgr=b6c7^3+9hAza9!B-nF>#eqXE5SR^-H ze*%tmo+D=!5jq<~5G0QKHhjmKn%Q-}3G8-H90W%-NZGv8pLjNJC_1gBK&S6X=i#e) zQ3MTcRMi?J*h{fau>^qEoLtH9L&u#uQ=_K$`?av!*Co)ytmc-9yHG1t92~xi zILjswy!|>(S>Tu7mR%61XFl+gjSlZ-hqTvGU*wbC`FB>q+bd=G8i32A# zO3Fz^MeD(XDi)h=#B}-T3BPN*m=-VyTcz!J5VDFJLFQyMg=1rNU3+M#qW`;^$a0;U z0F`kmG-f&@XxG4Dh_Q2jcTg>jW*@8Tvr7ImOIGd{Qo5G)NG|tJv+t$rZpTD z7=go8F%kG7R~L%dAr5h_|BH|uI*OZtn|-`<5Hdgit!kRH#5aa|k3{_|*%A`n71O3UAk8-(iAz$8fU-crY%^Aiu;5+a^n$}GI6mczq))Sa%Wr0EP zu+fY-NX%Rx-1KN(7EUw*|If*$K;pIKw8X=A!M-D6M&nP^2c)bxO&(1f3`p!OZxW$B z+?=JT1~$$II{nig-Lt}Ey&YQm0^4}?P(||ptq7^u^luYRo453hg?be)RIP;9qp_}Y zh>NA}j9pQbrF4h(Iqy7j9mA2Ts)eBUNv6GWqkWS$;E8^@HC>bVhtD+D{1FiBvoHs< zXCzR-bP%7PrWL@g;0}Y`ixXVgbKy$Ws6Q`WJSZlq9DZCK6=79m?=Hu|f;iSVQuFiEOpQBk*Yj#cYjU2bcZ4iP_S#ng z_1d&8DLyA>< z>u#`cx z&B7o^2 zdT^loUCCC5q^#BBzt1}0(lt@Gq2cg|XFX$PD$4HtMd&Vt_lkq$C@y_rO&8A{NSaEU zJ^(en%G?^A?OmIzGK#PryiD&KdtTmqcEYKlC~q6MAnQPeDl9fde3o$kz4iz&z%O|{ zyj{h}KtMKVRO4O^wCMqu6sWdvXc5Cp*(ufL#|YlK%6h5sMD-@N$xz8KgG^wf&LB8O(5+4umMI6f3~}Ht&M-If2P0N>rIb)Gq*0Z87QCS zEb-=1y7-awi3s;&t|4Ns8bD~a5w9D4h$?74fY!-o8(a5{O<%videbjP+d5pyvb-O* zW5X64puf}_`};E!3eYnYwemXFti>14S_{>Y^1xDMV7pwJp2*aQNzlXTl-1qxX?xrQ zE$+g^NH&e}E$-&mA;$aJxT_8r%jXLi%r(_>A3$|vjYWKZ;I|Svb>j-cnHy%4c`Tvt zeP+isWmSr#PgtGO?ATHb=>{~qj&#LQd6PI?1+`|Sq9`zYg)>qc7N82B8On&`Yb?Ol z_a_Su2sro8nn$68n?J+F^nc&-{64+^^b^hQfO8^>S3B)WnHj3MJ}k$|7`Epd?l5T= z_Uz>_axn^ap}qx@-_a@yhw=Fx&I}+0%4lc#HB>GrN6r`)*L`Y(P;AU;o75*#MPWwo-nrz6f+o&q=ep=i0~9 z%4I?ypPUbkE+2lxDa@P-= z;Ah;tN(wGLTr*adx3&a?_`v;$^&IdP+^nzCpNhE{%Yw|+)$XWmZ`9nMwRD$Hzo{(l ztntaVYUN^K^q{0rslyWk`b6I-D0rxks>a;pc-*{fP_=C5hIL-64XGt_rstZ2o^Vdd zHQ!*Bs^7o8FB|f2U*4_bpWlTg9oB2R{&54T<|%&rN*$tE-;~Np{^Z@e)mM;tS=JptPM>$lTH#NXRs197d5w zF0IhB+?5RHh656s1T74X!|Udy>QmU)iYMEj7*+07nSS21wU{Hmx^Smvtvl*YGey+^ z`jfcAUES$XdW0;VBrOlRFgI-Q`H0vOYr?Pq*yVc9`xrIQ`s~pUl}1Tsw`UIvSUk#t#OjZy5xi*nyX-La=#$ngU+@~KEWOE*_`pQ2wcM9z;r7;5L z+Iug)2sn$U#t1?`cT3^|uy6_@VNO2LL-sYbe-RV&Ghjn9?}qEYwv&EB7izAgX4UCS zir#q4=cZX;6&JC?cUI^EzRkiS!2<|zC?Y^j31paucV5+88GOcbbH(++^E|U=)PaZe z8pz5G#Y$7B`$g+QtIxWj9g-c?ZM_cenQ9sw&T7Wd?iYrom2aZvD#+Yg4`Z#FN4;3? z@}1WR#DzjPOC4gXxOj(zBfGxj^V5MfV{8=AjqyBY6J*6^yDlP1=icX5eUTUBqZc|C zMk{rLOPZgC_tksX?|ENqGWk!*x?z9GAxV9K%1Swm*VRd{TW45nCBjFOY)lvZ*H;1= zwEqcNk!z+Y70If3P?}n|JO!yCfAYP?sR(ky?R~Em^*_(YF&vd6w9jV;o?}6@IK;i_ z7UwX>vd*H)+m^5pGOU3h9vkm`lxr9cki9rRah{ty04ZLKqnY&Xh>$mrKd<~UxRHx? zE$c6~fp#cIfcPwsAQzd(Af-jFS@BFfj`=&+{7VF+FFI$r%6^o)Q9zFlFAF~)fYd8V z7@hnz)i^*y0}OH|lLCLWCmL#h+KN!03aOoc^ zv+y>VR2L$sjI#fV2_Rs+l-;PAE2D_ zGTivZ*H~9WV+fzgj465fmuB--MutSIf!gp`x`$eP-p2IbGdpT={@%$aM!@Su8eNSk?UiXY z&sH^_F1p!hmhl{~5cZGw7;4Kc_JMmrk@+yYq%N#-M5R=JWzB!`JqxEh=DIPxZa&lc|5L;7v=nR(8Y17)1Php~}xq zFC)f9G3<}ZKY@>CJ2eYoR7?AC2WRI#x%I(WgtNdD%|u(e>E{kO$;Lk3^m=6dh#N;y zP887w;ohH}gz;})j7MB(OHmbjz2Cx#GTL#7kMB zF%bK9_>a5HIDmZg+Ef@lP8AUuVl5`3g0m7yt2967j{V+>sYL@5MrFR@bO;ibupegN zkIi|LwS6&r&;BTByZmX$xZMoZzpOL$udGchFB~@&|1EXQFGSxcvdRh^J2%Nig#2D# zy}$6lQvC96nJEL~#iH_oO`a>{(T$ z?f-<7oYyWb%;o&BO3h_i>k;FOPbIh-Uxc>&+6rnpm%n`621qhNGASRKZmYFaBxMU6 zMQUx^0KHl$hd4Md?;kpMx)F6_mAasq=jjl3>1mI-gft585y#m9C#ler}6FLrxa9y|YdU+a1#hj;Ou679o9MKu|&&#g+U1h3A)P~i* zf#Ey1Rxe7dQD-jK3|@J9X5_9^{dI}t8CjC#)bm{R7Ki$(^n``uD)Hj?1}ZTLpwVSs zdG_oMOMlM(83E`-Yj+gb6zuH*ER>QVWZ2N0kYjYq!dWx3uiR3yVCw=qG-kU|f9B@- zg;jxclhM08U$3`$rh=3^HD7jNus9oPy|%gF^v1Rx75!T6FjGk5N~UINk>*v0jPD5l zLB0orlQ=swQ*!zwFgMULJ)L*Eo=t$+=WDQ|XL~aLVdhV??YGwap%E09?4$hZ_OaT_ zc{!n-sZS1?J#McI1CAEPCgu=Z+zaf#ITZ!EFs*>r4)8uK)zoz{#(gx}fEAZ^bNhyy zY0QhPlMn^vY2@b3$Q1iaF(dz_$CfBd#j|1~1^P}hlNo8%e9Em7Tff*zXE?>p;9IPM zhci)4w&s(>Cj89L_^2_AA|e_R>*OBrb9!!B&KzwHZlVghg(y3E&g71x3E$O8r)XSfUDd#y?>1 zO8??rFhr!jxMh&kbNtuvH4uDMZ`Ryh+07N2?@mgb{;-><8AA`tpmmOWH~y&t5f_Jc zd2xY`l=QGLX`LSlyR>&R;@aEK z3=mZLWz`o$s!8TSvZFxYW4GAJ#FpQC2<{9Aw0Rv;&ERmr2TULs#iOuJqH|r>zneJTxq16xhv$ZsOnI z2*Jhuu@6?SEdq4T`5t=xJ!sYiRFs-56e%!xzL1X#Y%Kjdn!n2Zw>is9TZ_k{w*vUO z6FWHkbMo@t{dQd&#L^>Y?Q(dXS3gTmUwGLtbH|!gJw!2~!RbyPC<5{KAbVI%kNG<`3A zcdUJ%^w@NR5WnZ3Nz>g7sGv3gbJ_#XA!3IE>9HYE!(fOOl@3|+kNVLB50C=3T6}*> z)(}5p?i1zV)jD5NpO^2d7(B~@Msn74yYgrI>9Yh!ai1??Jrgv4H))0 zaTe*K<98|Zx6i|{FLL9TZaAPy-2E0^q5@nnAvUVf+g;YCCSaB?pTu=#j_w6=WQFZd zf77t>35yG;tk3ES?X%kc((ZYsUHyQferMjLeVNMrO^|uIGia_))qaiM`|%Dzj+laM ztj~@k(#FQM{qTfnire&#ofo{)MFh3E2MUn)dUms*eT0Y9GhVuNAvs{4RLe3OE#z3| z2k!=@H?@eb$KR<`wyZ~guxEB-D^N&QKRc4W5EIq=QmuaCIpW#2eJghm<>I~iCOcfc z@tKmtvphvXgg%^Qy|LcUL9O*&cbHT1U8@NWf1Lm1yS;tb^UL!Bcn4DlIY_sH#IFs& z4X)W}|0r|2*LOA9Ff>C>C^de&H}6hZNsO?`_R* zPQ<4ARygE(=d1o*gd=d1Wdg_jz?M;t{AbS_r-~vZ9a_!Gs~nz9T805!m4SV1ErROc zwq|K5q=wXZcIx-#0??y7OXar^t*sC8VJ_y_!CJl>MsWp7KXoNUN4~Om=WM*k8i4TI{B+ z@-~|rr(%-7gMjy~o2Y1ZaFx0rHU80$u(U)E_^1d7>P9t|O5~`sCB;#U*^qrZcb2ry z11lIP$8$NBx~}G;Hlgl5t(y-lyiba^j&&p*nm*W2b4F#L=z>AFscv_-9PLUrkw0k2 zr`5a5o%+0O`Jm||Vge!-)E@pq~pv8+#7-W?tDW z@J}X7v`Ywc{-cZom6h}=`T->T0)KRFbw{+y_PcW62h2?b`SHM;w9+r-kiY$Ga_|<) z?+2qx4&$iHJ1pAhEgPo;ntXWsi?er|-kN)ls@C6pHVdY+C=k|xlru}OO?G{t z=sQ9!Esd8tFH6`C2$%3G4 zmRShUdedAGBh1az82kKK&D|4UZ{4_yr?-*jWsWJzpOXSWskG{CLoVOg+|R_nf$Bag zz`qi93}s);fBkkT;(Ta%c6a)FaMJOELK{LSM+*ai%S18_k3(!};|R^zTUJQ94Oi90 ziIUPu=2w-Ut-f+*wbJ(ruF>@5%|=d{D~l1dT;gaDV&Y_j%Is)*xe#=i7hb0vm@a=5Ollo{f7DGXs$eae1n${B{$VfCrjgLn4U z-c(EmpFI3{#0-17_Q3yy9_TZ5HFZZP)BuvkF&}LwqU(Ubjqo8B$0|YQ4am=pVdc0L z8<6KuKbVd+r6 zwC_U~J9_BmKBL+R(W+@ZedDc^ZmR++*C%q*gXWXKS=vpe1EL1GQJ8UpRiSH;^Cye@ zwQ|s@>-n-58^mmGQ!6w%!UXYD7D9%J1;dDQvm3e|*NbY&gbk~ShaL%Gx9s0q`3~>ZpM$tz$@sleT)L?)XOi!+%vsi0 zxWp=aw|w(RFQW5xs026)jzy7sAJi&H660=j;(s_7qt(Cf@C}l zU2Zl)8C_G3feNV95tNNNT#YumdvnZR$Lhf%j;T@}6f9cpk}Poov>*1+TT}v;U{G4faJHZUN zwE2a9hE|>v&@qgsAiDQbdjg9M%{p|*L%cvTn?|IKPJS;rYH`UT*v0YTLD<5?3TIB@ zl#P4&TKgGPE-QL)6TILt;acQbCT>ijlDR{ibaw0p#V;k^i1d}=w0a#4*q_y33i#u&{A)iQ=XRd{Rd+%fXx=m{m^!tk?prYOtL$Hn{?iw3qmt#9V z_NX1he1Mwb1ck6>R7G_!DCFhdX+d}HMY#a)d_9ttR`l`1-J?Z+&IS1-|JC^Y*)B7V zQBw0Z<#)PkKseUjFd}viW(=#EgKl})eY5+f?+EK)f5F+u(jbK(20nGO*JU|(R65L+@xppM zQ?btqy0Zm^!CC_iklmfy3)pMfXy!sxfL;HMv4c(me|Ar|_d z>m54bJ>{(Mk1YGWb^Z#Su)?W$V->~?^C#cH=dK3bakhfDKhHM1?P6K_R^~{HV*2_o z0q?D!1&CS{fQsoY8qk6`6W^RV;06zB?23SI=V7l{U&&dXOl30a?| zKaPa89zV2&>SdYb#-KysF}mm$U0CF*)`OS>(q=F)iMd=hbn@epw0dn@A;wcX`&Asiu$966UWXrz$`81S+HPCAh%F zg)Vmza2viMpZ$0Ag40XG$nkFboaj(6QzbeZELagR)q6doO3N}?<-63sKfZ6_k?1;B z8|KPpe#&b#f%fHCg{cZvw##YklPI*Odua`0a{ox00Z~=a&i%$tgj{k+YA+ zO$9Tdz_!xTVchv#KZTMVQX1`e{$KM}RdYK7G@S7%)1(!fr2K~ zcQty3^HbnMneSA15;Pj*5@GF3(e|`<}wOc(g`m^|Itx zS~_mqfa41{&2EgmF9W+Nwkrr2v>|6R)BSJ!%1DD!djXe$^iXI1GHmuTV#jp~{C z>+75XKTM96I+hd*5)C_3^mndNUT2(Q1rF{Xj6x6@agLt`ofM^w9!~BrUld?KoLDJ+ zl_nb;(scRGijio&6-NZ0)Ijvp>M^UT%|c$icvp562wNatXzx@ zE)Yu!CA~8ush)>sZ8bHIHEfp2H{TJt{NJC3zl~@I0)+*GVtRHLVWVV@LzPxefZ?#q z3<}1D&JIy|gseVp!iC1Bqv6$zH^;sih1FK8f4uuNH#gW5L-};6tj*N5C{`+|_!2zWw3i^_%8G)$lXg8Fw<&-++1Is2gXud&3c@H>r) znNBJE9}xqU)@G_y75{}1hq^ihP9O``jqG7+&8}MN00fm}8b^`1$gD`;Cl_AD5t5bl!3|xK7ZUK`)R+I#CQ1AGi&+8R~8S zSi!Sbw${p5W<#+7v)O$rsyn2)_?x~NXQ=%?DS!Xuo++5TVzU8KumC>xmb)5Uqwc1| z#^YA~^t!g6xz$!)d~In7pD9KzkXuZHx8i$x{S2$(vx=@0H2ElZYj87f?)}W!SR>G< z7zeP#r+4!{{y)9fSaM#_6A`~AE(T5@L1)X+@Hk!Ct`mN7#d-5WRz*cV6$(bEPDV|# z790D1&*umb|s0EuNHOs_ZWFH>X8N*6+=F2MPUD)yy@3pTZD^zXG z5@R>nI9TGU0kZPGxiUj^{0|)&?6ym2+s6I)L+E$0PTH?%cR3+jY7~R;jnA zh~TbYj?w;*;|v+3YN1>=6<0)nr-nkU4P&HFtN@V)s_pMxAaBY=0#<%-hlZT3vBU1%MM6nQb@u30fywIh`z$Av z&Scix;}^3v49Buc%)QJQEmpf-g!O*5`TlBD8UaVa?rgy-CYr&@4FzSH)BE-ZJyE=< zBBFL!y5ybAC|AJHW#8=D6Kjti-9Qu*$)z^!*z>-2S|E)W!~34>`@X`@TFv^M@-xeC z%tmmX66PS^PpF`UBn$W16fahM9%YEQM!_qiT(K1LLh4vG2BS2 zj+t8>+dhAV8L+XL=<2WJ5Md3N+3Olq8*RydbhD=bQ#rQPy-`{IxZT6F`dhiHh1Ubs>p{}LJuV-e(tb=bP3-t>f7{u630*=Xl~Ce#cZL>G3)Jywx`F zW(Y=*%#VooT}pWIXB!)rcW$fpo62QkrtyeRY2zj2T}OkFn+xAglyiIyR^=-cAyc)N zt~MGgvx@l_+xg9`w&_zHjAO(O-C6MbLU3c;jc%E?=|Mv3edd*kG39>J24-jKCA1Rw$mRtWF?ej zbCtQ7Wg0ixUG(Wcz-i;u`(|UeC2^aw5(Gbm5uBomy8*19OB{?8XexkC3hW19{<;Ol>dE|NSr>SxSeg5fB1Zv!9KlN>_9#Z#p>#i8r>npYQn&LvuJVFa?$_XS!v%Ex&Ue)l}H-b)Fe9DFk7#ZCXGi0bEO zQ24O|21^-@66|-ibrw8qs7ORMkymGjyWP|^&nib`I(kjC(Hmwo8TyNmlf&Sh9)L#y zr+K4x^LjhlNW*QpG3T1a;g!nIJz~LaIVB^$D0(l$UapA3TG`zBpU|Jw7?|2E{ixqn zq3R7qe#PHc!Z^>k>BxX@Rye^2Lx{}Lig*Gr6?jIY%sc+SmETl8?r9;i#V}z3cI9WCK{N|MZ2`%*qUZV0X z0yGC@Ga=cH6eDVOL+ozjtqYVFA{d7v=c-s1Y`u?W7{ww(sBcyT*9Z%?Fe8gO6@%>C zBQL|>30K@`(Uca_oXa%Rr!!TZDJ~w?kyOqy=dOu$2&RIxjcndde|#sY{J`h!g3Ga? z)t_ZzCIO1gVi72Tc?H2_Ov=3JVIVq*Ih0KpZi^<6PW!#Zm^}LZ-?MtN@=!7T(a#UJ z_8z7qF%Q^!bvvEe!oOxZGmYn+c>aucFSbqKhNsSGwq_7)U9me{8A6@ z(;xe_Lj(;Al&1Hg5x~?XMdS#pu;Q@L3G+wKc2%4bAm+=Y4|@1Sj6idY2DFq2qDbZU*N8}tX@A#J%X*}*rQJlj%3GPUaQW|nE@y;` zPBq%GivCk3K#6oevLFPm-ba*Ff#CA8tblKNF}+|7m0YHir@4QRlO;J1GgnHZ?_cfM zns6s=dMs?N|FQ=JoME=a#R!5{vpe+zZK`#V;g0}4yr)kd{f?fVy{XKq7?sAVIeN*xG`5_N}zAPtuv^rWB`UZ%@QUqz`N`*6En= z3+#S(%J3X48oK;DJu0;_;lC$ke$jgy$HNgTv0<&&7xLrSxSN>ORc^T785%F!6~9*! zo9J4wcqGU_Pw)GKpevOUJr=F>UgNOd+ucs=Mfm^gQ+*jeXBuJNO{B%(jk(!^9M!tp z=L@8-g*3zjzAHLjm>xk+^(u`(5!L)iom(ya-vP!Oz?YN%yd_PJekN zyXTN<&%Pa+xpn{vU%w;xN4OVOm?GC9jM98q2)7ccVe}$?8)Nmj{MeZrgj|fYvZZ5w zzVVk!eni&*nE21Z!n~I7SjF97A9)3OE-D2M@R&qgSZ6@gY^hNs=WMC)mGP?$tnA;? zd1GEV85J=KRl3L=WEpYyEE6iomD?+Rh_9hGvjP`syx_e=l>*rQ71NEUvaJg@WF75| zz9uZ&!h_s058g7$=_dk}m<%$Qh%rrA6rg!ZtgW%^N|Tf!YpO@ZYsqsJ{+5^minFte z#DNP27oI)eZZk@<4v^A~^G8A9|EQY*B&LL8cv?>EFdGXUW>FcC;e2AbhkS9;371Bd z_O0cd^e5gWNc23N#JpaLnI?^zxkGM_CA#~>&DdSC{j}TIb42;m*Js5)x`gW$1loqr zv&!#wrwLbvcsN4=Mx~|8HXGpISbC3S1q)%3CZzzUy}8oR!*{GQsZL-K!{WN46ER~l zHm;Q+XW2t}vwR+@WwNiJ&8i$%)x1q&v3dP-(GC<+^SQJAtPvq}OFZ^m!IW^))8e;C zX}_n>2G*u>UX-I{P`YRV<{tX1z_d}JIB&(79Thu^V=ck1d{9ok|Vl963+4!kP8 z0%6^M^%L+t7%ulb{>Q7WP$L(3OE2N#fxqnJe{ zy*7jz0iO-y4r50C+N#Ikqn_s&QQDbMq*!DT-1SoM4Xl1tE7szVqf>^mLr}uPO zXWc2l2S1e06F;hcw5@=CIii$s8+BE`6TSD-15`okqeVfsRs7xM&CW2%TIIyRj^QZQ zJx-~^L;yiPESk>*}B1HO%*4T3%Pzn97r>0=mza)t_p{nj+45 zT-W?+WLzF#qOuG`%TMU?L0i|7G{Z#gZ$l4!KXh0V0(fiww(Y9Tb)@1)f<4i)A@&4- zZd*kN(C+TssCSw`&EjC>KM9mi1mYR(3|>7UjDRHGn~?#5i~}=H0(%j z2dgVcw1x-Q*2+}t!^+GV@wI>avXajQUY?kUn$AvDe3j6Xs(?NKx9=t=bVcS-AOc!7 z8r zN9w{SD2t7A9-{GxKP_n&&qmQSEdcMIeO?caj+VYMtw%4e-rj?a`ANZXhw9_Ws z-S$Xj^6im`j|`p5fz|&Lg0tmvLK0txjJ9F&y+SwfKCVcWRy{$X0cS!X`ygoSY$~lc zVfp44nqU!jPT7bgC$lH_!T#p=gje4_P#~7Odn4NWG<~QEC0TscAv8m)xVRWc+yKuF zZN*0M)g>V=15W4D2tG32Y*gQxjSq4C>Ob9y@rcc#AS)z7V);$XMF9?b5 zDIo!;ATR%{qYUd4_eI3bdu*FB6M>PkgQB zbM#8tE8wq_$*rdhy(Vrx=1o7*`~^Z=yI@oVMcJr6tQvo3!-#?lUy)Z>V_Bak5n#o` zQwEr1-r6D0#(vj1n||IXly;}hhMc{yYKQDu-TtQjxE-6A~~&MYO*6aNnyc@oacD*3XMOsOEOp@FwL1a{d0i7id>QP zBnp^FxnAJgS3w&bhsL>_qQ|5}z*o#(h<_UTr14~|#c)OF%a>qf?_8zk07bd_u(_&# zC>Y;)ehUmbIPJPzv8hvPlGS%J={h24jfLx`vTW0m-~N;fZ@fR|bt$ybUcF8F>Z09Y zhyadD@M93VXp4!328uE~DmC#79W(j9J5YU;Icnx=PXZs&{`B&3F6l_e^uqYVv5z8+ zigf?*PF2^H8J55^qT0gQ`aM;JIot+nA8d>X#_wzs3g@tT7c943lVi$~ej|!2Y-=sL z8_d{$ALx2L?J^WDI1~6wgr!(h#B9Zfq5+=*D z0*#y1wUw_ud?n+Ny>IlJi1&NOn1mst=?isEM{I2hm^QVb=x9hi*}Gl=9hjYxUSk!< zaS7o=U?G&YW0kWEfpe@LCtr`1;K)+dg@rsdJ_}Pn?Vki_GmeD5u?J|!C5Xk%g{b(m zX^&?eb8|oeXy3^gFoNI%1vj(Pb$C6Rz5!Q@OZQ!W5s$vrE@y=|!@P4Im~7yYU^QYphh37U|f5E79xR9`9T zYi0lRXpV`4+(goyc_Xr2ros9JY*iWrv9UpiXtB(r%GSt0jQj(`03Y@+m2iD^ejz;e z<%_k#@jwPC3}ST3{F?gDxkd=^ZdJ2LXUw$p@+d|2b)`&#i=F~1nuddgz;s$Xetmr$ z8!;L29GqTb51p9b*;^Qr9Snx?7^J5-?Md$!>4 zaEM2K@ABaeGdI!{H_pE}^$fH=CY861&QLl3&h3QeN=_17?2n|dbY{2;9Hu%!Z26GL zU=MuJ#|Oiz*LZ{I-AI#|fBEBa#WD*=_2!93D?=21%hjg-JgfQnG_td`@pBtSB)uf> z>~l9q4jT6X9ysTr!e%9GFAY4$c2+wDYKdQsAiI8e_L0cHRJ}PdRHYORNwdz9+YISZ-Xl;S9jC*j%sMOqJ=@U7s`OhXp`khCvax zzoNAzZ+AvhCejLHL(r5MZj>jQooe8NWkYpre}4&1_P<2RLh&w2_=H?P;uea|nCz%Z zWt(?d0|h=vuKX3!#DV}jaA>X0jmv57g8WbDZja}`0!*>}%2AcLmsFC) zvgoQspZUH^!G@>(M@+n)JRnCvWLlT)U@n21o&>&N(e*%gE8aZ`Ofzyo2Z|TIP|_!) zsQ5{-VbN;~JG-vE+m?G@Rm$V!>r1W{pZX&glsx6E|3#HZs>&1-D)Mbq;C>C(DMa%~&TGot}U(Ufu`O zJ{kPUzn|H;-2V0Ir=+keH$-p14JQ^1_q^IJMw7mbo)aKTVC#c$o)65qn02GIp(`gZ z=XptG0Dfx`PY&K*hu9S0<3*P3We=8>SJXh!o3$TbnQB;+>mQjoRj5wB{OPW6>uvGT zIolBA04AY|yI8TnT|m-welL9O-6yS;r=p6pr%p~1WPC1|$PL7CS;1I`k@#bOFU0m3 z!p{9*How<8sN-@zpy=mw-KF}M`ljtij57i!33m$J`%`6ms8>I>Kn%DmoZ8htDZ%w+ zih8!Nl`q|73E~HPcwWXm;%q_bvgVhP6O2e~K7G-rF;81pH0o4shNk}h`kzh~dK2_- z1B3+2`hJ^Wa2&aR!z!_>b7}xvecdG? zJ2nyP`{w-*p5u6)<3672bAPV$Y>atckzfb+O_gddg~tg?oIgLnBmG26Hs_geNKb&v z3Mvmn{Er8*Q9&~T*=QC6F*EV9R^;9X)qq{P%^1Q74IbHDG&mPzL5Ob z@9%9}g5y)=XfI3!ZFYd8t7gfiDfX4QJJR`o-~zNB3`v(I(<3;Pnz3QMtNYGt(55qs zU-7W&{A6#@VS%R)#UG>>%iQ8rG{upGMXM*P?|!+i@$biA0!U@cVIVptCMz&ASvgD- z_DUXgs!LU)SQk1Fu&>~<;>AIxm4ae;_0(0aMeF`8C?B|)V2UH;-Zs5CST>t|L4|E& zI&+33VII9Y@e^R=?;7Q-Ci^xjS5??hRbpwvQA$7o{$5Eg)|I$84bybHIM`^>bKwIv zE`4BePd`GH8Rcc2`)EoALqtI!$(HW@&kpib#zgm(p+_P`dKI9x65oeSi_0ic#b+!p zMjnEy9(t5M;$)iYftzG`PTy_0-O_T@^Y-E9ze`t}_9ZF_qWH$-Liaa^nUP*)4-2D^oe%i_ zCVdJReQ|2?!}yI#o>Q7rCz6Nq1DFn=SIfJolA68k`k*pcj%r4Kr`@ZE#ah8GOv3=v zzGBr1oLnKnC3wzyb*b(;6&2-VfY`ow>vB}llI(EP&Ao~64r64z$;gt{4{1~|p1g?R z#%34(FmM{lp`YIRY3AHn-wsVcy`R~(c|VkyZEJ78C?rYH-XTcW8tP(;%7wFbfg^<* ze?&bHtE~*?XlXa5-kWEW_rM1+L&?BGvggr{N^!I3R!-=9q)pd{Cff{Q8?;7odwxOz zF9(QLOA90{)1$Z9dReRbzeUVMj{nEgBq}fvv~mvUq_!BPwR^;0(kf25nOY0tgP(o< zi|0(ll(5|@9%ZfS1+bH-Om`{8RyqtRRg2!kefq{^$;uc|7D|!jH7dBClVyct5Wr^1z*DaA{%WfO1O+TNkH?5?L{PXwQw ztA_7cK(e5E6plYXs6WBqt#${kz2Qh6k_sJjax(7!o%Rc1Q5Q$H8Dy#Cn$7T5CG<{R z@b^ppPApX%|EzqXBdzCgqTRs@KuEj{;8ayLIzM!DmrnoxML>i6?f6u8@D*6% zztfzCe{a65Reh*1>eGWzxanr^_P%z+Ze(iuL79-y(oCj^O$PH+vAL64^&}~+Hw0>t zx+#*^*!%n&DC=6L7REyLt>U3)&f;;2kEWJ7Wz90V=&?DQ%c6*$34+6EIR!rdU=9Ci6x)-A<>Y8nv9?3iZ{>|@XKDzX&dbAofSEfKTuWpwZ8G58Z?-NSHnJ+Iy=syZP#eVH+)9^@@kM8eDw; z*n%qdYO$U3GGMel#B6jaosP#1cGzLNeSgQCQq7g+DBk*H^R`VYL;9)%U=`VE16^J{ z9;!SM-nLm2R$?a>EbWuMlaaf}MK?g_f;J|lt+rMD4hIogBp;_G=XikUG^R!G*}>Q(qs$R~ zZd~{BBAVX%Uu-PoKnd_L>O}Uzuf3PrWg@xT^UJsH1(yrz_2z;R4oA&1vSoFEmty>zj;fs z;MF%=u$^K(OxL7UIH7GI$8JR3H;Cg)ng(CDWq?f8c1;Pmpk*BQ)cH%RTlM^H@_i;n zDK2*BLdxWQtyN<&F`|*r^N)$6-D9daa|+?G#ufE8J!r!^B(;J?ut%Aht$X^X?wF4W5l0LwJ+t^Sh|R85i_^ugPG+i#b3UE zDTq^E5=!MS&y*64(>=d*_{dHw80P3^*|9-AqtWyF%1 zS53aWzG^Wp`Sf_;&&%h>$f+rA-s$0KT(bm*6-=OUcDGjiYX%zEoLn~Pi&3HTMIW|K zP<1qm=QpI@OTZmF?+?=rWzL^j@AUs%t#h;``dwA}qJb}C$k-Nzo}jsoG2L-Pe{9%qhw$UA7Kq%kUajR>5>+|^O4u;N1Ju)vsADUHYfVJ z(|WxN*t2^W*M(&SkS$gQ7Puvi=*<4{NGpYdZ^>N>OaGjQZ=O%)Glu;3FRvfGGpy%& zianV|1q-e06tckJnc9^6w)y8iw#eHk;98JOyO~aHyB$A0vTYAzv9vkxj~Q&+A2g&e zI663Ogt~5YSIao(MC0eGC&pq@qWyH5xo)tNZl2o$d$ffR8}`^!tD6FJHy!@BO={G9l`Hx;lvTkYHgj#-?(yRU>u@V^b3#5dsp@h&G zjzTX5B;F^VIrH|<|`{yICN4$-~sZ%3C&$vmiavt5dU*abIy#V=sje1u#DRX86tn3 zy7QF&Gg+44^(i)XCWDi!8}UcgV;kxqv^0<+yOXz?Z=!N=ulf3wmNTQxY0jXZq};tW z1GT=6_2b$fJne)Nk0vZMy>OnDwXRoHV@V=DkpL;izHZ&S-+N1c_UB^^ZJSL1rS=|~3%~Ja5?3{wBL6hs z2@p`Kr+8p101GQF`V+O;>;J|^fg_ISQr9{Pn0;uJl=Sya?qn|8+1@olAWIFmK&1{qi!ihOf1`j?9;ZH_o@=<}9MisFFU3m| znEI?a|D@QkT0h)-dx$<3k{j8vo!kb+*=Fu7;%0W|Ud4D1rF+2p?%g$_?>tE`=9v=y z9KLXBR!n%%Cq1nXLU*Io%WbRA#+Oc3mo9Bno!knD+cbmx(FVMn!CQCbawDM+vtmbc z_O7r}6UvNh(rOsK(J}{Pv+k-AU~W}_?)HBF%onXU`0%BFou5xK75H31NuCP$ldU>x zVVuD37~O9ukemylj2?Zahw3i4J}SCyA4*`sHaXj#9~F=j?VR}AV%|>~zFtRjn_fpH z>sFf0%Q5T*SnS~aWt&e~Tr}DZsD=7rDKMd1=xN?*10!-fZbjg;vZ-sRrtoea>R~oG z28N+_Z1irAxnhm(IDyckHMIx=otutlvgu$wrv*U#SU!tof62zb?`tg&Pd{|9E_y+WI*G zP#IyrcGDxSI-douBnE42m0id8dqNyet_0=e5I3oZ|C{$jY2h;TqQfP&b2IiWgb?u=HX@<#)uY;oA*UvTmJ%J(6BED_@>!Lpc9Q>XmQ zV(beR8@DjiGt}Ir6wwwad9bK^6%jGt$JEwtMXpVUC8ddR{7*Ta9=*l0@*$S&7pDE@ z=Iom^JLxt%K74{9=%}|cE-0tZs&TNtx(2*jJ#nylh95c5RtR@*}&HBg{k>4gg z4W{ICaw>2df)d66Z?uKkGN1zu#t$C2WI>n!4A7A5Hh_DyMa9;4zMFcYZdFXkyrFhw zZ;W6hkdGUE$$J!e;g-0t`vN_8?Ee&b%Azy&4$7_h4me-p)Lc^ zTEd=cNzbLDv!ojfttXVhC(>^|yVFdiF(OpPNnrI}E=k0mG(;Z(8mX38V4Bq}l-|*y z*m~DI|G2C5^3%{*flJ>TMuh?5CwMB*FaC9F1+$#AWOT>uhU69o*c6=amg&pEZK&4Fi`w{)`fJ;-7GcaC{n`tq;r!R(vl^BS|VgdfcSIew#TMixTW z6+{skC?#;|sOl(Lex|6`Tdbo>4ysL(H1-lpN~^c=i@dh>KFR&YkgI4Nb+fM(7c}Ug z{HP9ehAXK|_q-V!z_VZ}JavG2-xPBhFJ(10GUGtCxREu*&Mw7VO9(~1&$$)lF(D^6 zPl~Bl>Y>)2+fxfuw(0|fWU9%^R`j{^D)6~9f0@W&H0HZCw<>VXK+vxGsvD&EUuFhle>eW^ATs34x(sEj_ zD1>QR&N##sWvV_0VYD15~NXnY~l^yrnZ# zcks5<`)A5MqJMb8fE6)TV(xf-vp5^j2YnfWeMIJ7L-(Wr1ju*5$AvP?G*4Gl(Z z&o7jMw<6$Z!FJ`$-d@u(m+IU!veSHMujH2Aqn$VuD9ssL+=tUqFE#laS^ z6r7uqKu7n0>n&oioQ=l?f(aWHFs9n20w^ zbpzp-&_NlSl!46}z4D#F@sWql83n}5-tiZehUaPnv~?cB-{jtx8F~i@YqoIzfITg{ zzTw8e<4IcEX2Rf0*&wKZoW`-c1Al!JktqAg#r{9##N^d)B>dpTe5H`7-Y z6-InRwSJt!|9DDG@AC$>*)=Iq!ZPliq{7omv(5hFxpt4_gwsckzQas4MKvS4(qcm!<2Xbv!$5z5r1V^Z2q>XH;bZ3N^$xSXxyQd^y9yT+ zr$hDLa>IE7&g$( zwL42nm0p)(49Vgg>bZDPK9`kOtH zYyy8}Z%Vt9XcbP@CK0kc+trM<=C!8xJ~ zG#rA+_=aRUzEywH7;QHaZ*&RyA5WN9j$g#-nPNR}62QU``(g|`N~&;M4eHfHT(m;i zJr7rkHC5+8Y3p7UKoF7Wcgpo*uY0G&bD?+3fB~z_hS{85|AY+*>%fe(0T&+@HZM9G zr?*=`OXTBc6|qg-DoJ@+t#c|u+UB16bVaIDmj+y>(1REj_vXWEarhCQc?i z!Tu-k<3#}I z4%Fa7ul6>Gw3~39G-8^+I>J3f{t3LAEdv;t{-MR3;qvYG!pG_sjr-;p|Ng*wO)X(d zxb@2VvAN(HaC%l{&y|O&UrA4z13@!}GGe#Bg>WPVHME`l=E60F2gJV%w3%8W>?<;I zcQ+IUNn;)Tqn85GEHvmn2)bK=#av(Sp{Un4&~^8Y+YL}=XJq}T=Oaj=$8=LBlgygR zGn*>5F_z>6R}8Y(Ee%K5y_~U{3@ND&AywbSBFa+TEQ-o1CST3Eg*2CI1*#5prd)!{ zU(^tHhYHM&mT#AvBNR+W+hnBcFeNcF;Ooi(ez}96M*VAOc7)Q+7%@~IeoxywtJPcQ zS2x+N&HCF!y4>BEZ(=&rFRB*+0no21c&Zm01(jPYdT%G|$E^iHgYZL(47BkeJy$Z< z{fNdpRg)pMR`d4&W8Tyj9d`j1GPXQtbRArm6&i!v*LSg)Z`L+Yt0S7bjz!l8_Rr~8 zx;v=#cG@uwW~cR~^;vIdQpvC=Uqx`XDPwo99^2I~&w*sa>yV4C4rJOggH0E_Vz1m)I{>S>aG&L5_g5%l&Zb zfI$8SKOKpYSwAD%I%!dw9N{s3BRUXrUMX{%<|K#9!27yf>z>{-soGG0;4O{Vy(6Fl z??B}a)uruTW2k?TW-h`hhR||0>H6o$xqV8b2Lu&63u>587?R*)_~+GN73~McxQzh& z|9BJxJ2^$;1*dF6eKSm@eD_VGP^fKM|C}B4_crxC!Casp)kXPtd(uc)?AL*K&)V65 zI~ML?s?v3km`Z8NwP3k}`IuBnNuYr<*UV|A+~+`C3w4M9gQL#d{D~GF+&7fBC>R-W zs`W@chA+~%-zq`BQPWL%pdHqIA!4p+5M`+EE6@e*k_gu~9$JiA4w(EgST?nUmR_gu zd3t&dG_xt({^$1@npP&}J7sSepwyjnS?=E~A>quIGjMn}Zr`uEA;ezWWcY!I_IE&r z9Y5cAiAz!8bYWjj5&=&lB2C5vF^2s!@Vv@ChlIqzc|04mf{r5UT$n5)VTr{PnQ;bd zfMTdZzqPquHbnG{d8qcI6hQ%mq~?>>z_jG8MdoI)Y%q=R9bl#q&_$3^P{OVRky+8% zNba5_3E#Bd``Zp+N;1=1a<7Ewx`#rr+TmkmI|Hlarij_M3IsW~i{|+|?-caTSt)F3 zpW6I3Ick{N(0|LjqvDwMw*XAsTpy1riEVrXYp=%S0L2~7TvXVihwmZySiNjVuQ@1kW9IN@48`5Xh(QLocjb37@1cD2{ni5n zrFcexTb$XLf98yaPItW0bL+x1t71<{G{D?kgF;pX*Svx$CGA^IUad%0P#eGh!#&~X zP4Memdw(YFtoP3gpBoN1e=htBkk4ImLGk4Z%&CKd=QfegM*Qmp+-i^wFzXUWgjB46 zA^V%vn1TnQ=%NRKKj_AR7_DEl^WA?r@TORaV@_Q>qQ(l{4yk{A#zPj9j$*9rhCDPoeBoRrC@BD&8C_Q zN1E@a&b^hR(7(?%7hngzQv+Do(01j1PgR6AUm45%Hs7Ps3z{b+U><30D`Sj=AMG?U zwP$xEO?*$T?BHt3rrYX_PO4Xz#6$JfizZfYsBww2RLuilkL>|e9WtAH9pZmE8J=d^ zKIk+Q^?iyU-c&xj?gFB{66lt4Rawsqc`*a&5qjj(pgrYn0l`i|ik_ z4Lwi0_sHHkb>jQ4!@3;|Wxw;#eqSGb5UO1G&M;|!udTlNiP?HU#Psa9Zmx6F0#fEN zGEU z(EH`>p7z2#G$2Rx9WesGbRN{I*S{>O9O*Paq}6g{?npmVtLQ1qGAz@ZN&3#%9@AHipPdaF^aT;3lL6{`i?s#c7Jb-H2jAP{MP0`*XyB5E(F<&W&a~9$DTY} zHLM}dV;s213Bk-Q;i7YY_k{rV!f`v-*7whno=&BvKW^WV;IDh83s8ffc$~KEZ^>L> z9fTa>@4&4>T$G@eElyj6eUhx0{Kmb@m9H9q-U#w<=0lotB{X}}y4L0s_1uTk#stxS z2f7eE`e@{kMM#PZc6Oj5eN`#j&!NjJ(nF2PoECkJG{3|BI3+TI#npP1=-klK+Jy6tt^2W?ht;ARaRn&O=vAN2*bORArzfxxN#tE9 zgc~8mQHCDWVhWMssmTT08730d;XCm`ytTaVK#f8Eg3YW zXg^4n>Kiq;KmdcuF#0}W;WKmMV@1`-bva?L#PYpwM-t!coTWWh11>NsN4L3MHEaZy zMUo%H{$SOZ&Tqg#o>YI-*|ncXJN{LBKF(#Wygqq!v0)3n%5WOl8gX%(L5@Zv{s%A} z0@BG+Wi{Yl@bnWnf2^vgndh$%OC zE%A4uY-iaiuNZC=_H2LG?=DU1e|S?<7ea7v$kJXg_cCR`+@6v#m{rFGx8Q0<>R$4$ zYPSo#3!Z4tI;t`IU9(|pcFs4f%~9bB5X?kFa2t0K5C;OycYB_B@XE{7kGLp?ef#

    6I4+zlBGCEb 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 + + + + + diff --git a/src/main/resources/static/images/external-link.svg b/src/main/resources/static/images/external-link.svg new file mode 100644 index 0000000..1d8102f --- /dev/null +++ b/src/main/resources/static/images/external-link.svg @@ -0,0 +1,20 @@ + + + + + + diff --git a/src/main/resources/static/images/icon.svg b/src/main/resources/static/images/icon.svg new file mode 100644 index 0000000..cd2dbdd --- /dev/null +++ b/src/main/resources/static/images/icon.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/images/logo.svg b/src/main/resources/static/images/logo.svg new file mode 100644 index 0000000..47ac64e --- /dev/null +++ b/src/main/resources/static/images/logo.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/static/images/panel-dark.svg b/src/main/resources/static/images/panel-dark.svg new file mode 100644 index 0000000..7ac4c0f --- /dev/null +++ b/src/main/resources/static/images/panel-dark.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/main/resources/static/images/panel.svg b/src/main/resources/static/images/panel.svg new file mode 100644 index 0000000..24a2611 --- /dev/null +++ b/src/main/resources/static/images/panel.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/main/resources/static/init.js b/src/main/resources/static/init.js new file mode 100644 index 0000000..b7afad0 --- /dev/null +++ b/src/main/resources/static/init.js @@ -0,0 +1,33 @@ +(function () { + window.addEventListener("load", function () { + // Tylan alphabet + async function tylanToFont(input, output) { + output.value = await (await fetch('/tylan-lang', { + method: 'POST', + headers: { + 'Content-Type': 'text/plain', + }, + body: input.value, + })).text(); + } + + const tylanAlphabetBoxes = document.getElementsByClassName("tylan-alphabet-box"); + for (const tylanAlphabetBox of tylanAlphabetBoxes) { + const inputBox = tylanAlphabetBox.getElementsByClassName("input-box")[0]; + const outputBox = tylanAlphabetBox.getElementsByClassName("output-box")[0]; + + inputBox.addEventListener("input", () => tylanToFont(inputBox, outputBox)); + } + }); + + window.addEventListener("load", function () { + // Preview themes + const themeChoices = document.getElementsByName("theme"); + for (let themeChoice of themeChoices) { + const theme = themeChoice.value; + themeChoice.addEventListener("click", () => { + document.documentElement.setAttribute("data-theme", theme); + }); + } + }); +})(); \ No newline at end of file diff --git a/src/main/resources/static/style.css b/src/main/resources/static/style.css new file mode 100644 index 0000000..b58ff3f --- /dev/null +++ b/src/main/resources/static/style.css @@ -0,0 +1,655 @@ +html { + margin: 0; + padding: 0; + color: #222; + background-color: #aaa; + + font-family: 'Noto Sans', sans-serif; + font-size: 100%; + + --h1-size: 1.6em; + --h2-size: 1.4em; + --h3-size: 1.2em; + + /*************** + * color params * + ***************/ + + --selection-fg: #eee; + --selection-bg: rgba(51, 102, 204, 0.6); + + --h1-border: #888; + --h1-shadow: #444; + --h1-backgr: #aaa; + + --h2-border: #666; + + --h3-unline: #888; + + --list-a-fg: #369; + --list-a-h-fg: #fff; + --list-a-h-bg: #69c; + + --a-fg: #36c; + --a-v-fg: #63c; + + --tbl-border: #036; + --tbl-backgr: #eee; + + --input-bg: #aaa; + --input-ul: #222; + --input-fg: #024; + --input-f-bg: #777; + + --err-bg: #e77; + --err-fg: #422; + --err-ul: #211; + + --btn-fg: #bdf; + --btn-bg: #06c; + --btn-h-bg: #05a; + --btn-a-bg: #048; + + --evil-btn-fg: #fcc; + --evil-btn-bg: #c33; + --evil-btn-h-bg: #a22; + --evil-btn-a-bg: #811; + + --btn-na-bg: #444; + --btn-na-fg: #bbb; + + --iframe-border: #036; + + /************* + * url params * + *************/ + + --panel: url("/static/images/panel.svg"); + --bgimg: url("/static/images/background.jpg"); + --extln: url("/static/images/external-link.svg"); +} + +html[data-theme="dark"] { + color: #ddd; + background-color: #555; + + /*************** + * color params * + ***************/ + + --selection-fg: #111; + --selection-bg: rgba(102, 153, 255, 0.9); + + --h1-border: #333; + --h1-shadow: #bbb; + --h1-backgr: #111; + + --h2-border: #999; + + --h3-unline: #777; + + --list-a-fg: #9cf; + --list-a-h-fg: #333; + --list-a-h-bg: #9cf; + + --a-fg: #69f; + --a-v-fg: #96f; + + --tbl-border: #9cf; + --tbl-backgr: #111; + + --input-bg: #555; + --input-ul: #ddd; + --input-fg: #bdf; + --input-f-bg: #888; + + --err-bg: #844; + --err-fg: #fcc; + --err-ul: #422; + + --btn-fg: #024; + --btn-bg: #39f; + --btn-h-bg: #7bf; + --btn-a-bg: #bdf; + + --evil-btn-fg: #411; + --evil-btn-bg: #d33; + --evil-btn-h-bg: #e66; + --evil-btn-a-bg: #f99; + + --btn-na-bg: #bbb; + --btn-na-fg: #444; + + --iframe-border: #9cf; + + /************* + * url params * + *************/ + + --panel: url("/static/images/panel-dark.svg"); + --bgimg: url("/static/images/background-dark.jpg"); + --extln: url("/static/images/external-link-dark.svg"); +} + +@media only screen and (prefers-color-scheme: dark) { + html[data-theme="light"] { + color: #222; + background-color: #aaa; + + /*************** + * color params * + ***************/ + + --selection-fg: #eee; + --selection-bg: rgba(51, 102, 204, 0.6); + + --h1-border: #888; + --h1-shadow: #444; + --h1-backgr: #aaa; + + --h2-border: #666; + + --h3-unline: #888; + + --list-a-fg: #369; + --list-a-h-fg: #fff; + --list-a-h-bg: #69c; + + --a-fg: #36c; + --a-v-fg: #63c; + + --tbl-border: #036; + --tbl-backgr: #eee; + + --input-bg: #aaa; + --input-ul: #222; + --input-fg: #024; + --input-f-bg: #777; + + --err-bg: #e77; + --err-fg: #422; + --err-ul: #211; + + --btn-fg: #bdf; + --btn-bg: #06c; + --btn-h-bg: #05a; + --btn-a-bg: #048; + + --evil-btn-fg: #fcc; + --evil-btn-bg: #c33; + --evil-btn-h-bg: #a22; + --evil-btn-a-bg: #811; + + --btn-na-bg: #444; + --btn-na-fg: #bbb; + + --iframe-border: #036; + + /************* + * url params * + *************/ + + --panel: url("/static/images/panel.svg"); + --bgimg: url("/static/images/background.jpg"); + --extln: url("/static/images/external-link.svg"); + } + + html { + color: #ddd; + background-color: #555; + + /*************** + * color params * + ***************/ + + --selection-fg: #111; + --selection-bg: rgba(102, 153, 255, 0.9); + + --h1-border: #333; + --h1-shadow: #bbb; + --h1-backgr: #111; + + --h2-border: #999; + + --h3-unline: #777; + + --list-a-fg: #9cf; + --list-a-h-fg: #333; + --list-a-h-bg: #9cf; + + --a-fg: #69f; + --a-v-fg: #96f; + + --tbl-border: #9cf; + --tbl-backgr: #111; + + --input-bg: #555; + --input-ul: #ddd; + --input-fg: #bdf; + --input-f-bg: #888; + + --err-bg: #844; + --err-fg: #fcc; + --err-ul: #422; + + --btn-fg: #024; + --btn-bg: #39f; + --btn-h-bg: #7bf; + --btn-a-bg: #bdf; + + --evil-btn-fg: #411; + --evil-btn-bg: #d33; + --evil-btn-h-bg: #e66; + --evil-btn-a-bg: #f99; + + --btn-na-bg: #bbb; + --btn-na-fg: #444; + + --iframe-border: #9cf; + + /************* + * url params * + *************/ + + --panel: url("/static/images/panel-dark.svg"); + --bgimg: url("/static/images/background-dark.jpg"); + --extln: url("/static/images/external-link-dark.svg"); + } +} + +::selection { + background-color: var(--selection-bg); + color: var(--selection-fg); +} + +div#bg { + display: none; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'JetBrains Mono', monospace; + margin: 0.5em 0; +} + +h1, h2 { + text-align: center; +} + +h1 { + border: 0.1875rem solid var(--h1-border); + box-shadow: inset 0 0 0 0.25rem var(--h1-shadow); + padding: 0.3125rem; + + background-color: var(--h1-backgr); + font-variant: small-caps; + font-size: var(--h1-size); + font-weight: 800; +} + +h2 { + border-bottom: 0.125rem solid var(--h2-border); + font-size: var(--h2-size); + font-weight: 600; +} + +h3 { + text-decoration: underline; + text-decoration-color: var(--h3-unline); + font-size: var(--h3-size); + font-weight: 400; +} + +.desktop { + display: none; +} + +/*noinspection CssOverwrittenProperties*/ +main > section, main > nav.mobile, main > aside.mobile { + border-image-source: var(--panel); + border-image-slice: 40% fill; + border-image-width: 1em; + border-width: 1em; + + padding: 1.5em 1.5em; + + box-sizing: border-box; + width: 90vw; + margin: 4vw 4vw; + + position: relative; + z-index: 1; +} + +aside.mobile img { + margin: auto; + display: block; +} + +@media only screen and (min-width: 8in) { + html { + padding: 1.25rem 4vw; + + --h1-size: 2.6em; + --h2-size: 2.2em; + --h3-size: 1.8em; + } + + div#bg { + display: unset; + + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + + background-image: var(--bgimg); + background-attachment: fixed; + background-position: center; + background-size: cover; + + z-index: 0; + } + + main { + padding: 4vh 0; + } + + /*noinspection CssOverwrittenProperties*/ + main > section, nav.desktop, aside.desktop { + border-image-source: var(--panel); + border-image-slice: 40% fill; + border-image-width: 2em; + border-width: 2em; + + box-sizing: border-box; + padding: 2.5em 3em; + + position: relative; + z-index: 1; + } + + main > section { + width: 48%; + margin: 4vh auto; + } + + main > section:first-of-type { + margin: 0 auto 4vh; + } + + main > section:last-of-type { + margin: 4vh auto 0; + } + + main > section:only-of-type { + margin: 0 auto; + } + + .mobile { + display: none; + } + + .desktop { + display: unset; + } + + nav.desktop { + width: 16%; + float: left; + margin: 4vh 4vw; + } + + aside.desktop { + width: 16%; + float: right; + margin: 4vh 4vw; + } + + h4 { + font-size: 1.4em; + } + + h5 { + font-size: 1.25em; + } + + h6 { + font-size: 1.1em; + } +} + +div.list { + display: flex; + flex-wrap: nowrap; + align-items: stretch; + justify-content: center; + flex-direction: column; + + margin: 0; + padding: 0; +} + +div.list > div.item { + width: 100%; + height: 2em; + line-height: 2em; + + margin: 0; + padding: 0; + + vertical-align: middle; +} + +div.list > div.item > span { + display: block; + text-align: center; + + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +div.list > div.item > a { + display: block; + width: 100%; + height: 2em; + + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + + vertical-align: middle; + text-align: center; + + border-radius: 0.3em; + color: var(--list-a-fg); + text-decoration: none; + + padding-left: 0.5em; + padding-right: 0.5em; + box-sizing: border-box; +} + +div.list > div.item > a.left { + text-align: left; +} + +div.list > div.item > a:visited { + color: var(--list-a-fg); +} + +div.list > div.item > a:hover { + color: var(--list-a-h-fg); + background-color: var(--list-a-h-bg); +} + +a { + color: var(--a-fg); + text-decoration: none; +} + +a:visited { + color: var(--a-v-fg); +} + +a:hover { + text-decoration: underline; +} + +a[href^="http://"]::after, a[href^="https://"]::after { + content: var(--extln); + height: 1em; +} + +table { + table-layout: fixed; + border-collapse: collapse; + border: 0.125rem solid var(--tbl-border); + + width: 100%; +} + +table + table { + margin-top: 0; + border-top: 0; +} + +table + table tr:first-child td, +table + table tr:first-child th { + border-top: 0; +} + +td { + border: 0.125rem solid var(--tbl-border); + background-color: var(--tbl-backgr); + font-size: 0.85em; + padding: 0.3em; +} + +table.ship-stats td { + text-align: center; + vertical-align: center; +} + +th { + border: 0.125rem solid var(--tbl-border); + background-color: var(--tbl-border); + padding: 0.15em 0; + + text-align: center; + vertical-align: center; + + font-family: 'JetBrains Mono', monospace; + font-size: 1.0em; + font-variant: small-caps; + font-weight: 700; + color: var(--tbl-backgr); +} + +input[type=text], +input[type=password], +input[type=email], +textarea { + box-sizing: border-box; + background-color: var(--input-bg); + border: none; + border-bottom: 0.1em solid var(--input-ul); + + color: var(--input-fg); + font-size: 1.5em; + + width: 100%; +} + +textarea { + font-family: 'Noto Sans', sans-serif; + resize: vertical; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=email]:focus, +textarea:focus { + outline: none; + background-color: var(--input-f-bg); +} + +input[type=text]:invalid, +input[type=password]:invalid, +input[type=email]:invalid, +textarea:invalid { + color: var(--err-fg); + background-color: var(--err-bg); + border-bottom-color: var(--err-ul); +} + +input[type=submit] { + background-color: var(--btn-bg); + border: none; + border-radius: 0.3em; + color: var(--btn-fg); + cursor: pointer; + display: block; + + font-size: 1.5em; + margin: 1em auto; + padding: 0.85em 1.15em; +} + +input[type=submit]:hover { + background-color: var(--btn-h-bg); +} + +input[type=submit]:active { + background-color: var(--btn-a-bg); +} + +input[type=submit].evil { + background-color: var(--evil-btn-bg); + border: none; + border-radius: 0.3em; + color: var(--evil-btn-fg); + cursor: pointer; + display: block; + + font-size: 1.5em; + margin: 1em auto; + padding: 0.85em 1.15em; +} + +input[type=submit].evil:hover { + background-color: var(--evil-btn-h-bg); +} + +input[type=submit].evil:active { + background-color: var(--evil-btn-a-bg); +} + +input[type=submit]:disabled, +input[type=submit].evil:disabled { + background-color: var(--btn-na-bg); + color: var(--btn-na-fg); + cursor: not-allowed; +} + +iframe { + border-color: var(--iframe-border); +} + +@font-face { + font-family: 'Tulasra'; + src: url(/static/font/tylan-language-alphabet-3.woff) format('woff'); +} + +.lang-tylan { + font-family: Tulasra, monospace; + font-size: 1.5em; + line-height: 1.0; +} + +textarea.lang-tylan { + font-family: Tulasra, monospace; + font-size: 2.25em; + line-height: 1.0; +} diff --git a/update b/update new file mode 100644 index 0000000..28ac59c --- /dev/null +++ b/update @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +screen -S factbooks -X quit +git pull +/opt/gradle/gradle-7.1/bin/gradle clean shadowJar +screen -dmS factbooks /opt/gradle/gradle-7.1/bin/gradle runShadow -- 2.25.1

    f^Eo2{~9X{pQEGuvo8f6-$rEGwv0 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�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

    YdF2 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

  • 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≷6xCrW1p7p$pb1XrybWkKEmH!dR@SB(+Wy092a-o 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/images/background.jpg b/src/main/resources/static/images/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6590149b67a16c6775902ff8d0ded49864be9ec5 GIT binary patch literal 1155813 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%0D7TTKf<5=06?M|pH4K%;fCdoJ~=^7E^) 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�TGXbzrEf7}=B zcJ~yjT`D!B0~bXQQRK8R%}Kf~m~s%vvT)0g5wpE%-UYfTC9ZI^yE-u_M9?98TJxV+ zZSt9IsQTAF*A)Q`l%ETpeuP~&O8if(tZ(Xr?JVEmPRqlGeF1OZULG|Kr*8Nm+N}I9 zTI8xkl_hDe@rIP4a=B3+USQWDJ|_-RHUW)%3${@`tGef{hc>c{t8kKX=1NAWwMpy4 zp>=Rl4jz<{v?sc+f(E89lBS8XktewO?2%!8tj-#e0y6xtU#N}Gmao(^Q6_hm97x~| zC91gw@)Hbd<8XEK<|H5djbQdx&Q}R}h+@dsnOfDDJ|!h{KQK$D`>+U z%!?A9PUjVw#`Nm7{7RcamXz}r4xOEOVpg%%L~R}` zvq!HbeQf!mHo6HfpF%(#&DK{mr>U_?V44P*-qQy3x5eRDj zw%bA-({)3Wdiq|hXx2;LI*T>$JF9nH4At>Fg3l>ad#b^YYT8Z&(*`(|Jq=d8in;B( zR`u5vUq5s*uz5cz=o0!B=KcGivt;q@zo!b~Zcm6dQ3GpBjO`Y?2v2=1bcsczd-$

    lv5jl93G+p;&bb#$8FC0jV< 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�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