{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/three/build/three.module.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/classes/materialObject.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/boolbase/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/domutils/node_modules/domelementtype/lib/esm/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/domutils/node_modules/domhandler/lib/esm/node.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/domutils/node_modules/domhandler/lib/esm/index.js","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/encode.ts","webpack:///https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/domutils/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/domutils/node_modules/dom-serializer/lib/esm/index.js","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/stringify.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/traversal.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/manipulation.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/querying.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/legacy.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/helpers.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/feeds.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/line.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/cheerio/node_modules/domhandler/lib/esm/node.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/cheerio/node_modules/domhandler/lib/esm/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/ball.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/cheerio/node_modules/domelementtype/lib/esm/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/enums/cameraType.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/enums/pointerType.js","webpack:///(webpack)-merge/node_modules/lodash/_root.js","webpack:///(webpack)-merge/lib/index.js","webpack:///(webpack)-merge/node_modules/lodash/isObjectLike.js","webpack:///(webpack)-merge/node_modules/lodash/isObject.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/three/examples/jsm/controls/OrbitControls.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/three/examples/jsm/renderers/Projector.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/three/examples/jsm/renderers/SVGRenderer.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/compass.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/classes/stage.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/classes/visualization.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/enums/renderType.js","webpack:///(webpack)-merge/node_modules/lodash/_getNative.js","webpack:///(webpack)-merge/node_modules/lodash/isArray.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/disc.js","webpack:///(webpack)-merge/node_modules/lodash/_baseGetTag.js","webpack:///(webpack)-merge/node_modules/lodash/_Symbol.js","webpack:///(webpack)-merge/node_modules/lodash/eq.js","webpack:///(webpack)-merge/node_modules/lodash/_copyObject.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/piramide.js","webpack:///(webpack)-merge/node_modules/lodash/keys.js","webpack:///(webpack)-merge/node_modules/lodash/isBuffer.js","webpack:///(webpack)-merge/node_modules/lodash/_baseUnary.js","webpack:///(webpack)-merge/node_modules/lodash/isArrayLike.js","webpack:///(webpack)-merge/node_modules/lodash/isFunction.js","webpack:///(webpack)-merge/node_modules/lodash/_nativeCreate.js","webpack:///(webpack)-merge/node_modules/lodash/_ListCache.js","webpack:///(webpack)-merge/node_modules/lodash/_assocIndexOf.js","webpack:///(webpack)-merge/node_modules/lodash/_getMapData.js","webpack:///(webpack)-merge/node_modules/lodash/keysIn.js","webpack:///(webpack)-merge/node_modules/lodash/_getTag.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/gridPlane.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/pointer.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/parse.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/enums/cameraPreset.js","webpack:///(webpack)-merge/node_modules/lodash/isArguments.js","webpack:///(webpack)/buildin/module.js","webpack:///(webpack)-merge/node_modules/lodash/isTypedArray.js","webpack:///(webpack)-merge/node_modules/lodash/_nodeUtil.js","webpack:///(webpack)-merge/node_modules/lodash/_isPrototype.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayPush.js","webpack:///(webpack)-merge/node_modules/lodash/_baseRest.js","webpack:///(webpack)-merge/node_modules/lodash/_SetCache.js","webpack:///(webpack)-merge/node_modules/lodash/_Map.js","webpack:///(webpack)-merge/node_modules/lodash/_cacheHas.js","webpack:///(webpack)-merge/node_modules/lodash/_setToArray.js","webpack:///(webpack)-merge/node_modules/lodash/isArrayLikeObject.js","webpack:///(webpack)-merge/node_modules/lodash/mergeWith.js","webpack:///(webpack)-merge/node_modules/lodash/_Stack.js","webpack:///(webpack)-merge/node_modules/lodash/_baseAssignValue.js","webpack:///(webpack)-merge/node_modules/lodash/_cloneArrayBuffer.js","webpack:///(webpack)-merge/node_modules/lodash/_getPrototype.js","webpack:///(webpack)-merge/node_modules/lodash/differenceWith.js","webpack:///(webpack)-merge/node_modules/lodash/_getSymbols.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayMap.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayLikeKeys.js","webpack:///(webpack)-merge/node_modules/lodash/_freeGlobal.js","webpack:///(webpack)-merge/node_modules/lodash/_isIndex.js","webpack:///(webpack)-merge/node_modules/lodash/isLength.js","webpack:///(webpack)-merge/node_modules/lodash/_overArg.js","webpack:///(webpack)-merge/node_modules/lodash/unionWith.js","webpack:///(webpack)-merge/node_modules/lodash/_baseFlatten.js","webpack:///(webpack)-merge/node_modules/lodash/identity.js","webpack:///(webpack)-merge/node_modules/lodash/_defineProperty.js","webpack:///(webpack)-merge/node_modules/lodash/_toSource.js","webpack:///(webpack)-merge/node_modules/lodash/_MapCache.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayIncludes.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayIncludesWith.js","webpack:///(webpack)-merge/node_modules/lodash/_Set.js","webpack:///(webpack)-merge/node_modules/lodash/last.js","webpack:///(webpack)-merge/node_modules/lodash/_assignMergeValue.js","webpack:///(webpack)-merge/node_modules/lodash/_cloneBuffer.js","webpack:///(webpack)-merge/node_modules/lodash/_cloneTypedArray.js","webpack:///(webpack)-merge/node_modules/lodash/_Uint8Array.js","webpack:///(webpack)-merge/node_modules/lodash/_copyArray.js","webpack:///(webpack)-merge/node_modules/lodash/_initCloneObject.js","webpack:///(webpack)-merge/node_modules/lodash/isPlainObject.js","webpack:///(webpack)-merge/node_modules/lodash/_safeGet.js","webpack:///(webpack)-merge/node_modules/lodash/_assignValue.js","webpack:///(webpack)-merge/node_modules/lodash/stubArray.js","webpack:///(webpack)-merge/node_modules/lodash/_getSymbolsIn.js","webpack:///(webpack)-merge/node_modules/lodash/_getAllKeys.js","webpack:///(webpack)-merge/node_modules/lodash/_baseGetAllKeys.js","webpack:///(webpack)-merge/node_modules/lodash/_equalArrays.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/entrypoints/Scale.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/plane.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/floor.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/frame.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/pillar.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/cube.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/entrypoints/AEMCube.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/scurve.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/compoundObjects/scaleLines.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/entrypoints/SCurve.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/objects/shape.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/visualization/entrypoints/NumericalValue.js","webpack:///(webpack)-merge/node_modules/lodash/values.js","webpack:///(webpack)-merge/node_modules/lodash/_baseValues.js","webpack:///(webpack)-merge/node_modules/lodash/_baseTimes.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsArguments.js","webpack:///(webpack)-merge/node_modules/lodash/_getRawTag.js","webpack:///(webpack)-merge/node_modules/lodash/_objectToString.js","webpack:///(webpack)-merge/node_modules/lodash/stubFalse.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsTypedArray.js","webpack:///(webpack)-merge/node_modules/lodash/_baseKeys.js","webpack:///(webpack)-merge/node_modules/lodash/_nativeKeys.js","webpack:///(webpack)-merge/node_modules/lodash/_isFlattenable.js","webpack:///(webpack)-merge/node_modules/lodash/_overRest.js","webpack:///(webpack)-merge/node_modules/lodash/_apply.js","webpack:///(webpack)-merge/node_modules/lodash/_setToString.js","webpack:///(webpack)-merge/node_modules/lodash/_baseSetToString.js","webpack:///(webpack)-merge/node_modules/lodash/constant.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsNative.js","webpack:///(webpack)-merge/node_modules/lodash/_isMasked.js","webpack:///(webpack)-merge/node_modules/lodash/_coreJsData.js","webpack:///(webpack)-merge/node_modules/lodash/_getValue.js","webpack:///(webpack)-merge/node_modules/lodash/_shortOut.js","webpack:///(webpack)-merge/node_modules/lodash/_baseUniq.js","webpack:///(webpack)-merge/node_modules/lodash/_mapCacheClear.js","webpack:///(webpack)-merge/node_modules/lodash/_Hash.js","webpack:///(webpack)-merge/node_modules/lodash/_hashClear.js","webpack:///(webpack)-merge/node_modules/lodash/_hashDelete.js","webpack:///(webpack)-merge/node_modules/lodash/_hashGet.js","webpack:///(webpack)-merge/node_modules/lodash/_hashHas.js","webpack:///(webpack)-merge/node_modules/lodash/_hashSet.js","webpack:///(webpack)-merge/node_modules/lodash/_listCacheClear.js","webpack:///(webpack)-merge/node_modules/lodash/_listCacheDelete.js","webpack:///(webpack)-merge/node_modules/lodash/_listCacheGet.js","webpack:///(webpack)-merge/node_modules/lodash/_listCacheHas.js","webpack:///(webpack)-merge/node_modules/lodash/_listCacheSet.js","webpack:///(webpack)-merge/node_modules/lodash/_mapCacheDelete.js","webpack:///(webpack)-merge/node_modules/lodash/_isKeyable.js","webpack:///(webpack)-merge/node_modules/lodash/_mapCacheGet.js","webpack:///(webpack)-merge/node_modules/lodash/_mapCacheHas.js","webpack:///(webpack)-merge/node_modules/lodash/_mapCacheSet.js","webpack:///(webpack)-merge/node_modules/lodash/_setCacheAdd.js","webpack:///(webpack)-merge/node_modules/lodash/_setCacheHas.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIndexOf.js","webpack:///(webpack)-merge/node_modules/lodash/_baseFindIndex.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsNaN.js","webpack:///(webpack)-merge/node_modules/lodash/_strictIndexOf.js","webpack:///(webpack)-merge/node_modules/lodash/_createSet.js","webpack:///(webpack)-merge/node_modules/lodash/noop.js","webpack:///(webpack)-merge/node_modules/lodash/_baseMerge.js","webpack:///(webpack)-merge/node_modules/lodash/_stackClear.js","webpack:///(webpack)-merge/node_modules/lodash/_stackDelete.js","webpack:///(webpack)-merge/node_modules/lodash/_stackGet.js","webpack:///(webpack)-merge/node_modules/lodash/_stackHas.js","webpack:///(webpack)-merge/node_modules/lodash/_stackSet.js","webpack:///(webpack)-merge/node_modules/lodash/_baseFor.js","webpack:///(webpack)-merge/node_modules/lodash/_createBaseFor.js","webpack:///(webpack)-merge/node_modules/lodash/_baseMergeDeep.js","webpack:///(webpack)-merge/node_modules/lodash/_baseCreate.js","webpack:///(webpack)-merge/node_modules/lodash/toPlainObject.js","webpack:///(webpack)-merge/node_modules/lodash/_baseKeysIn.js","webpack:///(webpack)-merge/node_modules/lodash/_nativeKeysIn.js","webpack:///(webpack)-merge/node_modules/lodash/_createAssigner.js","webpack:///(webpack)-merge/node_modules/lodash/_isIterateeCall.js","webpack:///(webpack)-merge/node_modules/lodash/_baseDifference.js","webpack:///(webpack)-merge/lib/join-arrays.js","webpack:///(webpack)-merge/node_modules/lodash/cloneDeep.js","webpack:///(webpack)-merge/node_modules/lodash/_baseClone.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayEach.js","webpack:///(webpack)-merge/node_modules/lodash/_baseAssign.js","webpack:///(webpack)-merge/node_modules/lodash/_baseAssignIn.js","webpack:///(webpack)-merge/node_modules/lodash/_copySymbols.js","webpack:///(webpack)-merge/node_modules/lodash/_arrayFilter.js","webpack:///(webpack)-merge/node_modules/lodash/_copySymbolsIn.js","webpack:///(webpack)-merge/node_modules/lodash/_getAllKeysIn.js","webpack:///(webpack)-merge/node_modules/lodash/_DataView.js","webpack:///(webpack)-merge/node_modules/lodash/_Promise.js","webpack:///(webpack)-merge/node_modules/lodash/_WeakMap.js","webpack:///(webpack)-merge/node_modules/lodash/_initCloneArray.js","webpack:///(webpack)-merge/node_modules/lodash/_initCloneByTag.js","webpack:///(webpack)-merge/node_modules/lodash/_cloneDataView.js","webpack:///(webpack)-merge/node_modules/lodash/_cloneRegExp.js","webpack:///(webpack)-merge/node_modules/lodash/_cloneSymbol.js","webpack:///(webpack)-merge/node_modules/lodash/isMap.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsMap.js","webpack:///(webpack)-merge/node_modules/lodash/isSet.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsSet.js","webpack:///(webpack)-merge/lib/join-arrays-smart.js","webpack:///(webpack)-merge/node_modules/lodash/isEqual.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsEqual.js","webpack:///(webpack)-merge/node_modules/lodash/_baseIsEqualDeep.js","webpack:///(webpack)-merge/node_modules/lodash/_arraySome.js","webpack:///(webpack)-merge/node_modules/lodash/_equalByTag.js","webpack:///(webpack)-merge/node_modules/lodash/_mapToArray.js","webpack:///(webpack)-merge/node_modules/lodash/_equalObjects.js","webpack:///(webpack)-merge/lib/unique.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/router.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/buffer/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/base64-js/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/ieee754/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/isarray/index.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/options.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/static.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/utils.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/attributes.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/css-what/lib/es/types.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/css-what/lib/es/parse.js","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/sort.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/attributes.ts","webpack:///https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/parse.ts","webpack:///https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/index.ts","webpack:///https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/compile.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/filters.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/pseudos.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/aliases.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/subselects.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/general.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/index.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/compile.ts","webpack:///https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/index.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio-select/ef063a6ca4c3f0d02d2fc3505e750b6fb81c448d/src/positionals.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio-select/ef063a6ca4c3f0d02d2fc3505e750b6fb81c448d/src/helpers.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio-select/ef063a6ca4c3f0d02d2fc3505e750b6fb81c448d/src/index.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/traversing.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/manipulation.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/css.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/forms.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/cheerio.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/load.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/common/unicode.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/common/error-codes.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/tokenizer/preprocessor.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/common/token.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/common/html.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/tokenizer/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/parser/open-element-stack.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/parser/formatting-element-list.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/tree-adapters/default.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/common/doctype.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/common/foreign-content.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/parser/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/serializer/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5-htmlparser2-tree-adapter/node_modules/domelementtype/lib/esm/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5-htmlparser2-tree-adapter/node_modules/domhandler/lib/esm/node.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5-htmlparser2-tree-adapter/dist/index.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/parsers/parse5-adapter.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/parse5/dist/index.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/cheerio/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/node_modules/cheerio/node_modules/dom-serializer/lib/esm/index.js","webpack:///https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Tokenizer.ts","webpack:///https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Parser.ts","webpack:///https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/index.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/index.ts","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/helper.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/BasicForm.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/ConsultantDetail.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/HandlebarsTemplate.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/const.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/InstrumentItemList.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/InstrumentReportDetail.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/ItemDetail.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/ParticipantUpload.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/ProjectGroupView.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/ProjectSessionsList.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/QuickView.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/Singleton.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/Transient.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/modules/VisualizationDetail.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/build/dist/webpack-includes-modules.js","webpack:///f:/projects/HumanInsight/Libraries/HumanInsight.Manage.Frontend/src/js/project.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","EventDispatcher","undefined","Number","EPSILON","Math","pow","isInteger","isFinite","floor","sign","x","Function","this","toString","match","assign","target","TypeError","output","index","arguments","length","source","nextKey","addEventListener","type","listener","_listeners","listeners","indexOf","push","hasEventListener","removeEventListener","listenerArray","splice","dispatchEvent","event","array","slice","v1","quaternion","_canvas","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","FrontSide","BackSide","DoubleSide","FaceColors","VertexColors","_Math","DEG2RAD","PI","RAD2DEG","generateUUID","lut","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","mapLinear","a1","a2","b1","b2","lerp","y","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","ceil","log","LN2","floorPowerOfTwo","Vector2","Quaternion","z","w","_x","_y","_z","_w","Vector3","Matrix3","elements","console","error","defineProperties","set","isVector2","setScalar","scalar","setX","setY","setComponent","Error","getComponent","clone","constructor","copy","v","add","warn","addVectors","addScalar","a","b","addScaledVector","sub","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","e","clampScalar","minVal","maxVal","clampLength","round","roundToZero","negate","dot","cross","lengthSq","sqrt","manhattanLength","abs","normalize","angle","atan2","distanceTo","distanceToSquared","dx","dy","manhattanDistanceTo","setLength","alpha","lerpVectors","v2","equals","fromArray","offset","toArray","fromBufferAttribute","attribute","getX","getY","rotateAround","center","cos","sin","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","f","_onChangeCallback","isQuaternion","setFromEuler","euler","update","isEuler","order","c1","c2","c3","s1","s2","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","vFrom","vTo","angleTo","q","acos","rotateTowards","step","inverse","conjugate","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","_onChange","callback","isVector3","setZ","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyMatrix4","qx","qy","qz","qw","ix","iy","iz","iw","project","camera","matrixWorldInverse","projectionMatrix","unproject","projectionMatrixInverse","matrixWorld","transformDirection","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","vector","projectOnPlane","planeNormal","reflect","normal","theta","dz","setFromSpherical","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindrical","setFromCylindricalCoords","setFromMatrixPosition","setFromMatrixScale","sx","setFromMatrixColumn","sy","sz","getZ","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","identity","me","setFromMatrix4","applyToBufferAttribute","count","setXYZ","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","determinant","g","h","getInverse","matrix","throwOnDegenerate","isMatrix4","t11","t12","t13","det","msg","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","setUvTransform","tx","ty","rotation","cx","cy","scale","rotate","translate","zero","one","ImageUtils","getDataURL","image","canvas","HTMLCanvasElement","src","document","createElementNS","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","uuid","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","Vector4","WebGLRenderTarget","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","Matrix4","Euler","_order","DefaultOrder","Layers","mask","isTexture","updateMatrix","toJSON","meta","isRootObject","textures","metadata","generator","wrap","images","url","Array","isArray","dispose","transformUv","uv","isVector4","setW","setAxisAngleFromQuaternion","setAxisAngleFromRotationMatrix","xx","yy","zz","xy","xz","yz","getW","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","n14","n24","n34","n41","n42","n43","n44","copyPosition","extractBasis","xAxis","yAxis","zAxis","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","af","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","compose","lookAt","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","setPosition","t14","getMaxScaleOnAxis","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","makeScale","makeShear","position","x2","y2","z2","wx","wy","wz","decompose","invSX","invSY","invSZ","makePerspective","left","right","top","bottom","near","far","makeOrthographic","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","channel","enable","toggle","disable","test","layers","m1","q1","points","closestPoint","box","segCenter","segDir","diff","barycoord","v0","vab","vac","vbc","vap","vbp","vcp","object3DId","Object3D","parent","children","DefaultUp","configurable","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","Scene","background","fog","overrideMaterial","autoUpdate","__THREE_DEVTOOLS__","CustomEvent","detail","Box3","Infinity","Sphere","Ray","origin","direction","Triangle","isObject3D","onBeforeRender","onAfterRender","applyMatrix","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","distance","translateX","translateY","translateZ","localToWorld","worldToLocal","updateWorldMatrix","isCamera","isLight","remove","attach","getObjectById","id","getObjectByProperty","getObjectByName","getWorldPosition","updateMatrixWorld","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverse","traverseVisible","traverseAncestors","force","updateParents","updateChildren","geometries","materials","shapes","serialize","library","element","JSON","stringify","isMesh","drawMode","isLine","isPoints","geometry","parameters","shape","material","uuids","extractFromCache","cache","values","data","recursive","parse","child","isScene","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromPoints","makeEmpty","il","expandByPoint","setFromCenterAndSize","size","halfSize","setFromObject","expandByObject","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","scope","node","isGeometry","vertices","isBufferGeometry","attributes","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","sphere","clampPoint","intersectsPlane","plane","constant","intersectsTriangle","f0","f1","f2","testAxis","extents","triangleNormal","satForAxes","axes","j","p0","p1","p2","triangle","distanceToPoint","getBoundingSphere","intersect","union","optionalCenter","maxRadiusSq","empty","radiusSum","deltaLengthSq","getBoundingBox","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","denominator","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","edge1","edge2","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","getNormal","targetLengthSq","getBarycoord","dot00","dot01","dot02","dot11","dot12","denom","invDenom","u","getUV","p3","uv1","uv2","uv3","isFrontFacing","setFromPointsAndIndices","i0","i1","i2","getArea","getMidpoint","getPlane","setFromCoplanarPoints","d4","vc","d5","d6","vb","va","hslA","hslB","hsl","ColorKeywords","Color","setRGB","hue2rgb","SRGBToLinear","LinearToSRGB","Face3","color","materialIndex","vertexNormals","isColor","vertexColors","setHex","setStyle","hex","setHSL","style","handleAlpha","string","parseFloat","exec","components","parseInt","charAt","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","copySRGBToLinear","copyLinearToSRGB","convertSRGBToLinear","convertLinearToSRGB","getHex","getHexString","getHSL","hue","saturation","lightness","delta","getStyle","offsetHSL","addColors","color1","color2","lerpHSL","materialId","Material","lights","blending","side","flatShading","vertexTangents","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","needsUpdate","MeshBasicMaterial","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","combine","reflectivity","refractionRatio","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","morphTargets","setValues","BufferAttribute","itemSize","normalized","dynamic","updateRange","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8Array","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Uint16Array","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Uint32Array","Float32BufferAttribute","Float32Array","Float64BufferAttribute","Float64Array","DirectGeometry","normals","colors","uvs","uvs2","groups","skinWeights","skinIndices","boundingBox","boundingSphere","verticesNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","uvsNeedUpdate","groupsNeedUpdate","arrayMax","isMaterial","onBeforeCompile","newValue","currentValue","isRoot","roughness","metalness","emissive","emissiveIntensity","specular","shininess","clearCoat","clearCoatRoughness","matcap","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","envMapIntensity","gradientMap","sizeAttenuation","linewidth","dashSize","gapSize","morphNormals","srcPlanes","dstPlanes","isMeshBasicMaterial","isBufferAttribute","onUploadCallback","setArray","setDynamic","copyAt","index1","index2","copyArray","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXY","setXYZW","onUpload","computeGroups","group","faces","face","start","fromGeometry","morphTargetsPosition","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","morphTarget","morphNormal","obj","bufferGeometryId","BufferGeometry","morphAttributes","drawRange","Mesh","updateMorphTargets","getIndex","setIndex","addAttribute","isInterleavedBufferAttribute","getAttribute","removeAttribute","addGroup","clearGroups","setDrawRange","tangent","computeBoundingBox","computeBoundingSphere","positions","lineDistances","updateFromObject","direct","__directGeometry","elementsNeedUpdate","lineDistancesNeedUpdate","lineDistance","fromDirectGeometry","morphAttributesPosition","morphAttribute","isNaN","boxMorphTargets","jl","computeFaceNormals","computeVertexNormals","vA","vB","vC","pA","pB","pC","cb","ab","indices","normalizeNormals","merge","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","array2","geometry2","newAttribute","morphArray","keys","attributeData","hasMorphAttributes","attributeArray","setDrawMode","morphTargetInfluences","morphTargetDictionary","ml","String","inverseMatrix","tempA","tempB","tempC","morphA","morphB","morphC","uvA","uvB","uvC","intersectionPoint","intersectionPointWorld","checkIntersection","raycaster","checkBufferGeometryIntersection","morphPosition","morphInfluences","influence","intersection","intersects","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","fl","faceMaterial","uvs_f","geometryId","Geometry","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","fromBufferGeometry","BoxBufferGeometry","mergeVertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","addFace","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","uvs1","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","uvCopy","mergeMesh","mesh","verticesMap","unique","changes","faceIndicesToRemove","idx","sortFacesByMaterialIndex","_id","sort","newUvs1","newUvs2","vertex","normalsHash","colorsHash","uvsHash","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","k","kl","uvsCopy","srcVertexNormal","destVertexNormal","ShaderMaterial","defines","vertexShader","fragmentShader","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","isShaderMaterial","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","skew","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderTarget","WebGLRenderTargetCube","renderer","scene","currentRenderTarget","getRenderTarget","setRenderTarget","render","clear","stencil","DataTexture","Plane","Frustum","p4","p5","planes","isWebGLRenderTargetCube","fromEquirectangularTexture","shader","tEquirect","join","isDataTexture","isPlane","setComponents","setFromNormalAndCoplanarPoint","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","line","intersectsLine","startSign","endSign","end","coplanarPoint","optionalNormalMatrix","referencePoint","frustum","setFromMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","intersectsSprite","sprite","negRadius","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","UniformsLib","diffuse","uvTransform","specularmap","envmap","flipEnvMap","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","shadow","shadowBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotShadowMap","spotShadowMatrix","pointLights","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ShaderLib","basic","lambert","phong","standard","dashed","totalSize","t2D","cube","tCube","tFlip","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","time","frame","requestAnimationFrame","stop","setAnimationLoop","setContext","WebGLAttributes","gl","buffers","WeakMap","deleteBuffer","buffer","bufferType","usage","createBuffer","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","WebGLBackground","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","vr","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","unshift","WebGLBufferRenderer","info","capabilities","setMode","drawArrays","renderInstances","extension","isWebGL2","maxInstancedCount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","_bufferGeometry","geometryAttributes","getWireframeAttribute","geometryIndex","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","reset","instanceCount","absNumericalSort","WebGLMorphtargets","influencesList","program","objectInfluences","influences","getUniforms","setValue","WebGLObjects","updateList","CubeTexture","DataTexture2DArray","wrapR","DataTexture3D","physical","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","status","getShaderParameter","getShaderInfoLog","trim","split","addLineNumbers","getShaderSource","getTexelDecodingFunction","functionName","getToneMappingFunction","toneMapping","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","parseIncludes","include","unrollLoops","snippet","unroll","WebGLProgram","code","shadowMapTypeDefine","shadowMapType","envMapTypeDefine","envMapModeDefine","envMapBlendingDefine","prefixVertex","prefixFragment","gammaFactorDefine","customExtensions","rendererExtensions","envMapCubeUV","objectSpaceNormalMap","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","isRawShaderMaterial","supportsVertexTextures","maxBones","useFog","fogExp","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","outputEncoding","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","depthPacking","isGLSL3ShaderMaterial","versionRegex","cachedUniforms","cachedAttributes","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","deleteShader","getAttributes","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","gammaOverrideLinear","getParameters","shadows","nClipPlanes","nClipIntersection","shaderID","isSkinnedMesh","bones","skeleton","nVertexUniforms","nVertexMatrices","allocateBones","gammaOutput","gammaInput","envMapMode","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCode","acquireProgram","pl","programInfo","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","WebGLRenderLists","lists","onSceneDispose","list","cameras","UniformsCache","light","halfWidth","halfHeight","nextVersion","WebGLLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","shadowsLength","ambient","probe","vector3","matrix42","setup","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","bias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","WebGLRenderState","lightsArray","shadowsArray","setupLights","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","WebGLShadowMap","_renderer","_objects","_frustum","_projScreenMatrix","_shadowMapSize","_maxShadowMapSize","_lookTarget","_lightPositionWorld","_depthMaterials","_distanceMaterials","_materialCache","0","1","2","cubeDirections","cubeUps","cube2DViewPorts","useMorphing","useSkinning","depthMaterial","distanceMaterial","getDepthMaterial","lightPositionWorld","result","materialVariants","customMaterial","customDepthMaterial","customDistanceMaterial","variantIndex","keyA","keyB","materialsForVariant","cachedMaterial","isMeshDistanceMaterial","renderObject","shadowCamera","renderBufferDirect","faceCount","activeCubeFace","getActiveCubeFace","activeMipMapLevel","getActiveMipMapLevel","_state","setBlending","setTest","setScissorTest","vpWidth","vpHeight","pars","isSpotLightShadow","shadowMatrix","vpDimensions","WebGLState","utils","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","setOp","stencilFail","stencilZFail","stencilZPass","stencilOp","clearStencil","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","enabledCapabilities","compressedTextureFormats","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","blendEquationSeparate","convert","blendFuncSeparate","blendFunc","setFlipSided","frontFace","setCullFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","initAttributes","enableAttribute","disableUnusedAttributes","disableVertexAttribArray","getCompressedTextureFormats","formats","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","compressedTexImage2D","apply","texImage3D","WebGLTextures","_gl","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","glFormat","glType","internalFormat","filterFallback","onTextureDispose","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","glInternalFormat","setTextureParameters","mipmap","setTextureCubeDynamic","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","createFramebuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","MIN_EXT","MAX_EXT","UNSIGNED_INT_24_8_WEBGL","Group","ArrayCamera","isMeshDepthMaterial","isGroup","isArrayCamera","matrixPosition","offsetMatrix","identityMatrix","cameraLPos","cameraRPos","setProjectionFromUnion","cameraL","cameraR","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","WebVRManager","renderWidth","renderHeight","device","frameData","poseTarget","controllers","standingMatrix","standingMatrixInverse","framebufferScaleFactor","referenceSpaceType","window","VRFrameData","onVRDisplayPresentChange","tempQuaternion","tempPosition","cameraVR","isPresenting","currentPixelRatio","currentSize","eyeParameters","getEyeParameters","getPixelRatio","setDrawingBufferSize","animation","triggers","findGamepad","gamepads","navigator","getGamepads","gamepad","startsWith","updateViewportFromBounds","bounds","getController","controller","getDevice","setDevice","setFramebufferScaleFactor","setReferenceSpaceType","setPoseTarget","getCamera","userHeight","depthNear","depthFar","getFrameData","stageParameters","sittingToStandingTransform","pose","poseObject","orientation","leftViewMatrix","rightViewMatrix","leftProjectionMatrix","rightProjectionMatrix","getLayers","layer","leftBounds","rightBounds","hasPosition","buttonId","buttons","pressed","updateControllers","getStandingMatrix","submitFrame","setFrameOfReferenceType","WebXRManager","referenceSpace","inputSources","onSessionEvent","inputSource","onSessionEnd","setFramebuffer","onRequestReferenceSpace","updateCamera","setSession","updateRenderState","baseLayer","XRWebGLLayer","requestReferenceSpace","then","onAnimationFrameCallback","getViewerPose","views","getViewport","transform","inputPose","getPose","targetRaySpace","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_viewport","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_vector3","getTargetPixelRatio","contextAttributes","xrCompatible","onContextLost","onContextRestore","message","initGLContext","xr","preventDefault","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","getContextAttributes","forceContextLoss","loseContext","forceContextRestore","restoreContext","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","pixelRatio","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","bits","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","vertexAttribPointer","normalArray","uvArray","colorArray","setProgram","updateBuffers","rangeFactor","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","isInstancedInterleavedBuffer","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","initMaterial","projectObject","isLOD","isImmediateRenderObject","renderObjects","camera2","renderObjectImmediate","materialProperties","lightsStateVersion","programChange","numSupportedMorphTargets","numSupportedMorphNormals","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","isMeshPhongMaterial","isMeshStandardMaterial","uCamPos","cameraPosition","isMeshLambertMaterial","boneTexture","boneMatrices","boneTextureSize","isFog","density","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsPhong","refreshUniformsToon","isMeshPhysicalMaterial","refreshUniformsStandard","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","ltc_1","LTC_1","ltc_2","LTC_2","uvScaleMap","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","FogExp2","Fog","InterleavedBuffer","InterleavedBufferAttribute","interleavedBuffer","Sprite","LOD","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","Skeleton","boneInverses","calculateInverses","Bone","linecap","linejoin","Line","LineSegments","LineLoop","Points","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","ol","edge","edges","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","inclination","subdivide","appplyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","B","generateIndices","generateBufferData","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","isInterleavedBuffer","intersectPoint","worldScale","mvPosition","alignedPosition","rotatedPosition","viewWorldMatrix","transformVertex","vertexPosition","_camera","addLevel","getObjectForDistance","normalizeSkinWeights","skinWeight","bone","isBone","getBoneByName","computeLineDistances","positionAttribute","linePrecision","localPrecision","localPrecisionSq","vStart","vEnd","interSegment","interRay","nbVertices","threshold","params","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","distanceToRay","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","prev","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","last","sum","signedArea","insertNode","removeNode","again","area","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","findHoleBridge","leftmost","px","py","intersectsPolygon","inside","middleInside","q2","Node","an","bp","ShapeUtils","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","forEach","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","ahole","hl","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","concat","scalePt2","pt","vec","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","base","inverseSegments","n1","n2","ShapeGeometry","_typeof","ShapeBufferGeometry","shapeHole","indexOffset","shapeVertices","shapeHoles","toJSON$1","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","freeze","RawShaderMaterial","Materials","AnimationUtils","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","tracks","resetDuration","parseKeyframeTrack","json","trackType","typeName","toLowerCase","getTrackTypeForValueTypeName","evaluate","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","track","getInterpolation","ValueTypeName","InterpolantFactoryMethodDiscrete","getValueSize","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","createInterpolant","shift","timeOffset","timeScale","startTime","endTime","nKeys","validate","valid","prevTime","currTime","optimize","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","jsonTracks","frameTime","fps","clip","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","DefaultLoadingManager","loading","FileLoader","manager","DataTextureLoader","_parser","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","load","cached","setTimeout","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","request","XMLHttpRequest","header","open","callbacks","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","setPath","setResponseType","setWithCredentials","setMimeType","loader","loadTexture","texDatas","loaded","mipmapCount","isCubemap","texData","crossOrigin","onImageLoad","onImageError","substr","setCrossOrigin","urls","isJPEG","search","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","current","updateArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","getTangent","pt1","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","weight","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","SpotLightShadow","SpotLight","power","PointLight","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","MaterialLoader","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","resolution","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","absarc","absellipse","ellipse","firstPoint","lastPoint","getPointsHoles","holesPts","isOrthographicCamera","zoomW","zoomH","scaleW","scaleH","getTexture","shading","setTextures","LoaderUtils","lastIndexOf","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","typedArray","TYPED_ARRAYS","bufferAttribute","drawcalls","offsets","ObjectLoader","resourcePath","setResourcePath","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","bufferGeometryLoader","details","geometryShapes","THREE","LegacyJSONLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","BlendingMode","textureLoader","materialLoader","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipMapNearestFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipMapNearestFilter","LinearMipMapLinearFilter","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPath","char","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","Loader","setOptions","res","blob","imageBitmap","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","paths","chars","line_height","yMax","yMin","underlineThickness","ret","createPaths","substring","Handlers","handlers","regex","onLoadStart","onLoadProgress","onLoadComplete","initMaterials","texturePath","createMaterial","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","fullPath","mapDiffuseRepeat","mapDiffuseOffset","mapDiffuseWrap","mapDiffuseAnisotropy","mapEmissiveRepeat","mapEmissiveOffset","mapEmissiveWrap","mapEmissiveAnisotropy","mapLightRepeat","mapLightOffset","mapLightWrap","mapLightAnisotropy","mapAORepeat","mapAOOffset","mapAOWrap","mapAOAnisotropy","mapBumpRepeat","mapBumpOffset","mapBumpWrap","mapBumpAnisotropy","mapNormalRepeat","mapNormalOffset","mapNormalWrap","mapNormalAnisotropy","mapSpecularRepeat","mapSpecularOffset","mapSpecularWrap","mapSpecularAnisotropy","mapMetalnessRepeat","mapMetalnessOffset","mapMetalnessWrap","mapMetalnessAnisotropy","mapRoughnessRepeat","mapRoughnessOffset","mapRoughnessWrap","mapRoughnessAnisotropy","mapAlphaRepeat","mapAlphaOffset","mapAlphaWrap","mapAlphaAnisotropy","AudioContext","webkitAudioContext","AudioLoader","SphericalHarmonics3","LightProbe","HemisphereLightProbe","sky","ground","AmbientLightProbe","Clock","autoStart","oldTime","elapsedTime","running","AudioListener","gain","createGain","connect","destination","timeDelta","Audio","getInput","autoplay","detune","loop","playbackRate","isPlaying","hasPlaybackControl","sourceType","filters","PositionalAudio","panner","createPanner","panningModel","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getOutput","PropertyMixer","binding","mixFunction","_slerp","_select","_lerp","_mixBufferRegion","cumulativeWeight","useCount","referenceCount","bufferCopy","decodeAudioData","audioBuffer","isSphericalHarmonics3","getAt","coeff","addScale","getIrradianceAt","getBasisAt","shBasis","isHemisphereLightProbe","isAmbientLightProbe","eyeSep","instance","eyeRight","eyeLeft","xmin","xmax","eyeSepOnProjection","ymax","performance","Date","now","getElapsedTime","getDelta","newTime","removeFilter","disconnect","getFilter","setFilter","getMasterVolume","setMasterVolume","setTargetAtTime","currentTime","clock","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","setNodeSource","audioNode","setMediaElementSource","mediaElement","createMediaElementSource","setBuffer","play","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","pause","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","getVolume","setVolume","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","wordCharOrDot","directoryRe","nodeRe","objectRe","propertyRe","trackRe","supportedObjectNames","reservedRe","startP","startEnd","lineGeometry","coneGeometry","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","findNode","nodeName","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","interpolant","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","root","_root","_initMemoryManager","_accuIndex","Uniform","InstancedInterleavedBuffer","ascSort","intersectObject","Spherical","Box2","Line3","ImmediateRenderObject","VertexNormalsHelper","nNormals","objGeometry","SpotLightHelper","cone","SkeletonHelper","getBoneList","boneList","PointLightHelper","sphereSize","RectAreaLightHelper","HemisphereLightHelper","LightProbeHelper","GridHelper","PolarGridHelper","radials","circles","PositionalAudioHelper","divisionsInnerAngle","divisionsOuterAngle","materialInnerAngle","materialOuterAngle","FaceNormalsHelper","DirectionalLightHelper","lightPlane","targetLine","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","BoxHelper","Box3Helper","PlaneHelper","ArrowHelper","headLength","headWidth","setDirection","AxesHelper","firstValidIndex","nCachedObjects_","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","RegExp","matches","results","objectName","objectIndex","propertyIndex","lastDot","subTreeNode","searchNodeSubtree","childNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","dest","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","action","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_update","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","PointCloud","setFromCamera","coords","intersectObjects","other","makeSafe","setFromCartesianCoords","distanceSq","closestPointToPointParameter","clampToLine","startEnd2","objPos","objNorm","coneLength","coneWidth","boneMatrix","matrixWorldInv","halfConeInnerAngle","halfConeOuterAngle","setPoint","setColor","Spline","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","extractUrlBase","setTexturePath","isIntersectionBox","isIntersectionSphere","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBuffer","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","copyIndicesArray","addIndex","addDrawCall","clearDrawCalls","computeOffsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","shadowMapCullFace","renderReverseSided","renderSingleSided","standing","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","MaterialObject","_classCallCheck","rotate90","trueFunc","falseFunc","ElementType","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","isTag","elem","isCDATA","isText","isComment","isDocument","hasChildren","CharCodes","decodeMap","Map","fromCodePoint","_a","codePoint","fromCharCode","replaceCodePoint","BinTrieFlags","EntityDecoderState","DecodingMode","isNumber","ZERO","NINE","isEntityInAttributeInvalidEnd","EQUALS","UPPER_A","UPPER_Z","LOWER_A","LOWER_Z","isAsciiAlphaNumeric","EntityDecoder","decodeTree","emitCodePoint","errors","EntityStart","consumed","treeIndex","excess","decodeMode","Strict","str","NUM","NumericStart","stateNumericStart","NamedEntity","stateNamedEntity","NumericDecimal","stateNumericDecimal","NumericHex","stateNumericHex","LOWER_X","digitCount","startIdx","UPPER_F","LOWER_F","addToNumericResult","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","SEMI","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","valueLength","VALUE_LENGTH","determineBranch","Attribute","emitNotTerminatedNamedEntity","emitNamedEntityData","getDecoder","decoder","startEntity","write","nodeIdx","branchCount","BRANCH_LENGTH","jumpOffset","JUMP_TABLE","lo","hi","midVal","htmlDecodeTree","xmlDecodeTree","restoreDiff","arr","xmlReplacer","xmlCodeMap","getCodePoint","codePointAt","encodeXML","lastIdx","getEscaper","escapeAttribute","escapeText","EntityLevel","EncodingMode","elementNames","val","attributeNames","unencodedElements","Set","replaceQuotes","singleTag","nodes","renderNode","renderComment","renderCdata","opts","xmlMode","foreignModeIntegrationPoints","has","_objectSpread","foreignElements","tag","attribs","encode","encodeEntities","decodeEntities","_b","emptyAttrs","formatAttributes","selfClosingTags","renderTag","renderText","getOuterHTML","renderHTML","getInnerHTML","getText","textContent","innerText","getChildren","getParent","getSiblings","siblings","getAttributeValue","hasAttrib","getName","nextElementSibling","prevElementSibling","removeElement","childs","childsIndex","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","recurse","limit","find","nodeStack","indexStack","findOneChild","findOne","existsOne","some","checked","findAll","DocumentPosition","Checks","tag_name","tag_type","tag_contains","getAttribCheck","attrib","combineFuncs","compileTest","funcs","reduce","testElement","getElements","getElementById","getElementsByTagName","tagName","getElementsByTagType","removeSubsets","ancestor","includes","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","DISCONNECTED","sharedParent","aSibling","bSibling","FOLLOWING","CONTAINED_BY","PRECEDING","CONTAINS","uniqueSort","relative","getFeed","doc","feedRoot","getOneElement","isValidFeed","feed","items","item","entry","media","getMediaElements","addConditionally","href","link","description","pubDate","updated","getAtomFeed","getRssFeed","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","_step","medium","isDefault","_iterator","_createForOfIteratorHelper","done","err","_step2","_iterator2","expression","prop","_MaterialObject","_ref","_ref$x","_ref$y","_ref$z","_ref2","rx","ry","rz","_ref2$rx","_ref2$ry","_ref2$rz","basicMat","_callSuper","geo","setRotation","_possibleConstructorReturn","_inherits","startIndex","endIndex","_createClass","cloneNode","DataNode","_Node","_DataNode","_this2","_DataNode2","_this3","ProcessingInstruction","_DataNode3","_this4","NodeWithChildren","_Node2","_this5","_NodeWithChildren","_this6","Document","_NodeWithChildren2","_this7","Element","_NodeWithChildren3","_this8","_this9","namespace","isTagRaw","isDirective","cloneChildren","instruction","sourceCodeLocation","defaultOpts","withStartIndices","withEndIndices","DomHandler","elementCB","dom","tagStack","lastNode","handleCallback","addNode","previousSibling","Ball","ORBIT","FREE_RANGE","INTERNAL","EXTERNAL","freeGlobal","require","freeSelf","self","_values3","_interopRequireDefault","_unionWith3","_mergeWith3","_differenceWith3","_joinArrays2","_joinArraysSmart","_unique2","default","_toConsumableArray","arr2","_len","sources","_key","customizeArray","customizeObject","_len2","structures","_key2","mergeSmart","isRule","uniteRules","_customizeArray","rules","multiple","_len3","_key3","smart","strategy","smartStrategy","newRule","seenRule","OrbitControls","quat","quatInverse","lastPosition","lastQuaternion","minDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","UP","BOTTOM","mouseButtons","target0","position0","zoom0","getPolarAngle","spherical","getAzimuthalAngle","saveState","changeEvent","STATE","NONE","rotateLeft","sphericalDelta","panOffset","zoomChanged","onContextMenu","onMouseDown","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseMove","onMouseUp","onKeyDown","startEvent","endEvent","ROTATE","DOLLY","PAN","TOUCH_ROTATE","TOUCH_DOLLY_PAN","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","rotateUp","panLeft","objectMatrix","panUp","pan","deltaX","deltaY","body","targetDistance","clientHeight","clientWidth","dollyIn","dollyScale","dollyOut","handleMouseDownPan","clientX","clientY","button","ctrlKey","metaKey","shiftKey","handleMouseDownRotate","handleMouseDownDolly","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","stopPropagation","handleMouseWheel","keyCode","handleKeyDown","touches","pageX","pageY","handleTouchStartRotate","handleTouchStartDollyPan","handleTouchMoveRotate","handleTouchMoveDollyPan","noZoom","noRotate","noPan","noKeys","staticMoving","dynamicDampingFactor","RenderableObject","RenderableFace","RenderableVertex","normalModel","vertexNormalsModel","vertexNormalsLength","positionWorld","positionScreen","RenderableLine","RenderableSprite","Projector","_object","_objectCount","_vertex","_vertexCount","_face","_faceCount","_line","_lineCount","_sprite","_spriteCount","_modelMatrix","_objectPool","_objectPoolLength","_vertexPool","_vertexPoolLength","_facePool","_facePoolLength","_linePool","_linePoolLength","_spritePool","_spritePoolLength","_renderData","_vector4","_clipBox","_boundingBox","_points3","_viewMatrix","_viewProjectionMatrix","_modelViewProjectionMatrix","_normalMatrix","_clippedVertex1PositionScreen","_clippedVertex2PositionScreen","projectVector","unprojectVector","pickingRay","projectVertex","invW","checkTriangleVisibility","checkBackfaceCulling","setObject","getNextVertexInPool","pushNormal","pushColor","pushUv","pushLine","clipLine","getNextLineInPool","pushTriangle","getNextFaceInPool","addObject","getNextObjectInPool","pushPoint","getNextSpriteInPool","painterSort","alpha1","alpha2","bc1near","bc2near","bc1far","bc2far","projectScene","sortElements","tl","targetVertex","nl","SVGObject","SVGRenderer","_elements","_lights","_svgWidth","_svgHeight","_svgWidthHalf","_svgHeightHalf","_v1","_v2","_v3","_svgNode","_currentPath","_currentStyle","_projector","_svg","_elemBox","_color","_diffuseColor","_ambientLight","_directionalLights","_pointLights","_clearColor","_clearAlpha","_centroid","_normal","_normalViewMatrix","_svgPathPool","_pathCount","_quality","_precision","removeChildNodes","childNodes","removeChild","getSvgColor","arg","toFixed","renderSprite","addPath","renderLine","renderFace3","ll","lightColor","lightPosition","calculateLight","expand","pixels","idet","flushPath","setAttribute","getPathNode","setQuality","quality","setPrecision","backgroundColor","calculateLights","el","Compass","CAMERA_TYPE","CameraType","CAMERA_POSITION","CAMERA_ROTATION","CAMERA_FOCALPOINT","CAMERA_FOV","Stage","elm","_settings","stage","cameraType","cameraRotation","cameraFocalPoint","cameraFov","cameraPreset","controls","setCanvas","renderType","setRenderer","setCamera","directionalLight","debugOptions","showAxes","setupAxes","showGrid","setupGridPlane","setupCompass","createElement","RenderType","WEBGL2","WEBGL","SVG","GridPlane","DEFAULTS","isAnimated","CameraPreset","FRONT","Visualization","isReadyForManipulation","canvasContainerElement","isFirstRender","debugElement","startAnimation","renderLoop","renderLoopId","INTERNAL_onFrameExecution","onFrameExecution","cancelAnimationFrame","renderInterval","setInterval","clearInterval","TWO_D","baseIsNative","Disc","getRawTag","objectToString","symToStringTag","assignValue","baseAssignValue","props","customizer","isNew","Piramide","decode_data_html_js_1","__importDefault","decode_data_xml_js_1","decode_codepoint_js_1","__importStar","decodeCodePoint","decode_codepoint_js_2","htmlDecoder","xmlDecoder","decodeHTML","Legacy","decodeHTMLAttribute","decodeHTMLStrict","decodeXML","arrayLikeKeys","baseKeys","isArrayLike","stubFalse","freeExports","nodeType","freeModule","Buffer","isBuffer","isFunction","isLength","baseGetTag","isObject","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","eq","isKeyable","__data__","baseKeysIn","Promise","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","resolve","Ctor","ctorString","colorCenterLine","colorGrid","Pointer","lineSize","tipSize","lineColor","tipColor","PointerType","tip","getParse","content","checkIsDocument","newChilds","TOP","CUBE_FRONT","CUBE_ANGLE","CUBE_TOP","SCURVE_FRONT","SCALE_FRONT","NUMERICALVALUE_FRONT","baseIsArguments","isObjectLike","objectProto","propertyIsEnumerable","isArguments","webpackPolyfill","deprecate","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","freeProcess","process","types","overRest","setToString","MapCache","setCacheAdd","setCacheHas","SetCache","baseMerge","mergeWith","createAssigner","srcIndex","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","arrayBuffer","byteLength","getPrototype","overArg","getPrototypeOf","baseDifference","baseFlatten","baseRest","isArrayLikeObject","differenceWith","comparator","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","getSymbols","symbol","iteratee","baseTimes","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","global","reIsUint","baseUniq","unionWith","arrays","arrayPush","isFlattenable","predicate","isStrict","funcToString","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","baseIndexOf","allocUnsafe","isDeep","cloneArrayBuffer","byteOffset","baseCreate","isPrototype","funcProto","objectCtorString","proto","objValue","getSymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","arraySome","cacheHas","bitmask","equalFunc","stack","isPartial","arrLength","othLength","stacked","seen","arrValue","othValue","compared","othIndex","visualization","scaleStart","scaleEnd","scaleRender","sizes","pointTip","pointShaft","Scale","_Visualization","pointers","scaleStepSize","ready","pointer","addPointer","scaleStep","currentScaleStep","pointerType","Floor","gridColor","Frame","lineLength","lineColors","cornerSize","cornerColors","addLines","addCorners","corners","Pillar","lineHeight","discSize","discHeight","discColor","discPercentiles","scalePos","percentile","discPercentile","Cube","floorColor","pillarColor","getPillars","pillars","corner","disc","anchor1","anchor2","AEMCube","addCube","initPointers","debugInfo","debugInfoCache","percentiles","_percentileX","_percentileY","_percentileZ","percentileX","boundPercentileToScale","percentileY","percentileZ","SCurve","sigmoidData","getSigmoidPathData","pathPoints","splineObject","scaleData","PathData","sigmoidX","sigmoidY","exp","aa","ScaleLines","yDirectionIsUp","scurve","MySCurve","scaleLines","drawYAxisHelper","drawXAxisHelper","getPointForX","getPointForY","getXForY","getYForX","MyShape","offsetLeft","offsetRight","offsetTop","offsetBottom","triangleShape","getShape","setDebugInfo","baseValues","arrayMap","nativeObjectToString","isOwn","unmasked","typedArrayTags","nativeKeys","spreadableSymbol","isConcatSpreadable","nativeMax","args","otherArgs","thisArg","baseSetToString","shortOut","isMasked","reIsHostCtor","reIsNative","uid","coreJsData","maskSrcKey","IE_PROTO","nativeNow","lastCalled","stamp","remaining","arrayIncludes","arrayIncludesWith","createSet","setToArray","isCommon","outer","computed","seenIndex","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","assocIndexOf","getMapData","baseFindIndex","baseIsNaN","strictIndexOf","fromIndex","fromRight","noop","assignMergeValue","baseFor","baseMergeDeep","keysIn","safeGet","srcValue","pairs","LARGE_ARRAY_SIZE","createBaseFor","iterable","cloneBuffer","cloneTypedArray","initCloneObject","isPlainObject","toPlainObject","mergeFunc","isTyped","objectCreate","copyObject","nativeKeysIn","isProto","isIterateeCall","assigner","guard","valuesLength","valuesIndex","_isPlainObject3","_isFunction3","_cloneDeep3","joinArrays","_joinArrays","newKey","baseClone","CLONE_DEEP_FLAG","arrayEach","baseAssign","baseAssignIn","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","isMap","isSet","cloneableTags","isFlat","isFull","isFunc","subValue","resIndex","input","cloneDataView","cloneRegExp","cloneSymbol","dataView","reFlags","regexp","symbolProto","symbolValueOf","valueOf","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","uniteEntries","_isEqual3","_slicedToArray","iterator","_arr","_n","_d","_e","_s","_i","sliceIterator","isSameValue","_map","_map2","propA","propB","areEqualEntries","newEntry","loaderNameRe","_entry$loader$match","loaderName","_newEntry$loader$matc","findLastIndexUsingComparinator","entryToFind","comparinator","startingIndex","rule","enforce","exclude","oneOf","optionsKey","query","use","loaders","expandEntry","unwrapEntry","_optionsKey","newEntries","loadersKey","existingEntries","resultSet","existingEntriesIteratorIndex","currentEntry","indexInExistingEntries","existingEntry","_existingEntry","combineEntries","baseIsEqual","baseIsEqualDeep","equalArrays","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","objProps","objLength","skipCtor","objCtor","othCtor","_differenceWith2","uniques","escape","escapeUTF8","Router","includesMap","registry","singletons","transients","selectorCache","moduleName","registryItem","setSingleton","selector","$","each","setTransient","getModuleObjectByName","currentInstanceCount","incrementedModuleName","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","that","RangeError","__proto__","encodingOrOffset","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","pos","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","b64","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","num","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","xml","xmlModeDefault","_useHtmlParser2","html","isOptions","defaultOptions","_options","flattenOptions","elems","parseHTML","keepScripts","contains","contained","arr1","newLength","CharacterCodes","isCheerio","maybeCheerio","cheerio","domEach","fn","cloneDom","isHtml","tagStart","tagChar","LowerA","LowerZ","UpperA","UpperZ","Exclamation","SelectorType","hasOwn","rspace","primitives","rboolean","rbrace","getAttr","setAttr","attr","objName","getProp","setProp","css","URL","baseURI","setData","readData","domNames","jsNames","attrName","domName","_","jsName","dataEl","querying","option","removeAttr","splitNames","names","attrNames","_loop","hasClass","className","clazz","addClass","classNames","numElements","setClass","appendClass","removeClass","classes","numClasses","removeAll","elClasses","changed","toggleClass","stateVal","elementClasses","AttributeAction","reName","reEscape","actionTypes","Start","End","Any","Not","Hyphen","unpackPseudos","isTraversal","Adjacent","Child","Descendant","Parent","Sibling","ColumnCombinator","stripQuotesFromPseudos","funescape","escaped","escapedWhitespace","unescapeCSS","isQuote","isWhitespace","subselects","parseSelector","selectorIndex","tokens","stripWhitespace","readValueWithParenthesis","counter","isEscaped","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","ignoreCase","finalizeSubselector","firstChar","Equals","Exists","possibleAction","quote","sectionEnd","valueStart","forceIgnore","attributeSelector","PseudoElement","quot","Pseudo","Universal","procedure","token","sortByProcedure","procs","getProcedure","procNew","proc","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","quirksMode","attributeRules","adapter","hyphen","boolbase","exists","endsWith","any","not","whitespace","formula","readSign","number","readNumber","skipWhitespace","nthCheck","absA","bMod","getChildFunc","icontains","itext","_ref3","getNCheck","_ref4","_ref5","currentSibling","_ref6","_rule","_ref7","hover","dynamicStatePseudo","visited","active","_ref8","pseudos","firstChild","elemName","every","verifyPseudoArgs","subselect","argIndex","aliases","disabled","required","optional","selected","checkbox","password","radio","submit","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","lowerCaseAttributeNames","lowerCaseTags","cacheResults","is","compileToken","relativeSelector","compiled","hasElement","_compiled$shouldTestN","shouldTestNextSiblings","nextElements","getElementParent","compileGeneralSelector","userPseudo","stringPseudo","alias","pseudo","compilePseudoSelector","WeakSet","isFalseCache","previous","lastElement","compileUnsafe","includesScopePseudo","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","sortRules","isArrayContext","finalContext","_rules","first","second","rootFunc","compileRules","reduceRules","defaultEquals","DomUtils","convertOptionFormats","_c","wrapCompile","compileRaw","_compileToken","getSelectorFunc","searchFunc","filteredElements","prepareContext","appendNextSiblings","elemsLength","nextSiblings","selectAll","filterNames","isFilter","groupSelectors","selectors","filteredSelectors","plainSelectors","UNIVERSAL_SELECTOR","SCOPE_PSEUDO","_groupSelectors","_groupSelectors2","plain","filtered","sel","filterBySelector","filterParsed","_groupSelectors4","filterElements","filteredSelector","getDocumentRoot","findFilterElements","queryForSelector","totalLimit","filterIndex","findIndex","partLimit","getLimit","findElements","filterByPosition","remainingSelector","remainingHasTraversal","els","reSiblingSelector","selectorOrHaystack","_make","haystack","_groupSelectors5","_groupSelectors6","select","_getMatcher","matchMap","postFns","matched","filterArray","_matcher","_Array","_singleMatcher","_matchUntil","nextElem","innerMatcher","filterSelector","getFilterFn","_removeDuplicates","parents","parentsUntil","closest","selectOpts","selectFn","nextAll","nextUntil","prevAll","prevUntil","contents","newElems","filterFn","selectorOrNeedle","$haystack","needle","prevObject","selection","addBack","_makeDomArray","_parse","_insert","concatenator","domSrc","_render","uniqueSplice","spliceIdx","spliceCount","spliceArgs","oldParent","prevIdx","appendTo","prependTo","_wrap","insert","wrapper","lastParent","wrapperDom","elInsertLocation","updateDOM","wrapInner","unwrap","replaceWith","wrapAll","insertBefore","after","insertAfter","clones","clonedSelf","before","targetArr","cont","_this10","staticText","textNode","setCss","styles","getCss","trimmed","trimEnd","newStyles","r20","rCRLF","serializeArray","encodeURIComponent","$elem","Cheerio","isNode","Attributes","Traversing","Manipulation","Css","Forms","CODE_POINTS","UNDEFINED_CODE_POINTS","ERR","SEQUENCES","isSurrogate","cp","isControlCodePoint","isUndefinedCodePoint","TokenType","Preprocessor","handler","lastGapPos","gapStack","skipNextNewLine","lastChunkWritten","endOfChunkHit","bufferWaterline","isEol","lineStartPos","droppedBufferSize","lastErrOffset","col","startLine","endLine","startCol","endCol","startOffset","endOffset","onParseError","nextCp","isSurrogatePair","_addGap","EOF","_err","surrogateInInputStream","willDropParsedChunk","chunk","isLastChunk","caseSensitive","CARRIAGE_RETURN","LINE_FEED","advance","_processSurrogate","_checkForProblematicCharacters","controlCharacterInInputStream","noncharacterInInputStream","getTokenAttr","attrs","NS","ATTRS","DOCUMENT_MODE","TAG_NAMES","TAG_ID","TAG_NAME_TO_ID","A","ADDRESS","ANNOTATION_XML","APPLET","AREA","ARTICLE","ASIDE","BASE","BASEFONT","BGSOUND","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CAPTION","CENTER","CODE","COL","COLGROUP","DD","DESC","DETAILS","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FOREIGN_OBJECT","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","HTML","I","IMG","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LI","LINK","LISTING","MAIN","MALIGNMARK","MARQUEE","MATH","MENU","META","MGLYPH","MI","MO","MN","MS","MTEXT","NAV","NOBR","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","PARAM","PLAINTEXT","PRE","RB","RP","RT","RTC","RUBY","S","SCRIPT","SECTION","SELECT","SOURCE","SMALL","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","TABLE","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TITLE","TR","TRACK","TT","U","UL","VAR","WBR","XMP","getTagID","UNKNOWN","SPECIAL_ELEMENTS","_defineProperty","MATHML","XLINK","XML","XMLNS","isNumberedHeader","tn","UNESCAPED_TEXT","hasUnescapedText","scriptingEnabled","State","C1_CONTROLS_REFERENCE_REPLACEMENTS","TokenizerMode","DATA","RCDATA","RAWTEXT","SCRIPT_DATA","CDATA_SECTION","isAsciiDigit","DIGIT_0","DIGIT_9","isAsciiUpper","LATIN_CAPITAL_A","LATIN_CAPITAL_Z","isAsciiLetter","LATIN_SMALL_A","LATIN_SMALL_Z","isAsciiLower","isAsciiUpperHexDigit","LATIN_CAPITAL_F","isAsciiLowerHexDigit","LATIN_SMALL_F","toAsciiLower","SPACE","TABULATION","FORM_FEED","isScriptDataDoubleEscapeSequenceEnd","SOLIDUS","GREATER_THAN_SIGN","Tokenizer","inLoop","inForeignNode","lastStartTagName","returnState","charRefCode","consumedAfterSnapshot","currentCharacterToken","currentToken","currentAttr","preprocessor","currentLocation","getCurrentLocation","sourceCodeLocationInfo","_consume","_ensureHibernation","_callState","writeCallback","_runParsingLoop","insertHtmlAtCurrentPos","_unconsume","retreat","_advanceBy","START_TAG","tagID","selfClosing","ackSelfClosing","location","END_TAG","COMMENT","initialName","DOCTYPE","forceQuirks","publicId","systemId","attrNameFirstCh","_leaveAttrValue","duplicateAttribute","ct","_emitCurrentCharacterToken","prepareToken","onStartTag","endTagWithAttributes","endTagWithTrailingSolidus","onEndTag","dropParsedChunk","onComment","onDoctype","nextLocation","CHARACTER","onCharacter","NULL_CHARACTER","onNullCharacter","WHITESPACE_CHARACTER","onWhitespaceCharacter","onEof","ch","_createCharacterToken","NULL","_appendCharToCurrentCharacterToken","withoutSemicolon","masked","SEMICOLON","_isCharacterReferenceInAttribute","peek","EQUALS_SIGN","AMPERSAND","ATTRIBUTE_VALUE_DOUBLE_QUOTED","ATTRIBUTE_VALUE_SINGLE_QUOTED","ATTRIBUTE_VALUE_UNQUOTED","_emitCodePoint","_stateData","_stateRcdata","_stateRawtext","_stateScriptData","_statePlaintext","TAG_OPEN","_stateTagOpen","END_TAG_OPEN","_stateEndTagOpen","TAG_NAME","_stateTagName","RCDATA_LESS_THAN_SIGN","_stateRcdataLessThanSign","RCDATA_END_TAG_OPEN","_stateRcdataEndTagOpen","RCDATA_END_TAG_NAME","_stateRcdataEndTagName","RAWTEXT_LESS_THAN_SIGN","_stateRawtextLessThanSign","RAWTEXT_END_TAG_OPEN","_stateRawtextEndTagOpen","RAWTEXT_END_TAG_NAME","_stateRawtextEndTagName","SCRIPT_DATA_LESS_THAN_SIGN","_stateScriptDataLessThanSign","SCRIPT_DATA_END_TAG_OPEN","_stateScriptDataEndTagOpen","SCRIPT_DATA_END_TAG_NAME","_stateScriptDataEndTagName","SCRIPT_DATA_ESCAPE_START","_stateScriptDataEscapeStart","SCRIPT_DATA_ESCAPE_START_DASH","_stateScriptDataEscapeStartDash","SCRIPT_DATA_ESCAPED","_stateScriptDataEscaped","SCRIPT_DATA_ESCAPED_DASH","_stateScriptDataEscapedDash","SCRIPT_DATA_ESCAPED_DASH_DASH","_stateScriptDataEscapedDashDash","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN","_stateScriptDataEscapedLessThanSign","SCRIPT_DATA_ESCAPED_END_TAG_OPEN","_stateScriptDataEscapedEndTagOpen","SCRIPT_DATA_ESCAPED_END_TAG_NAME","_stateScriptDataEscapedEndTagName","SCRIPT_DATA_DOUBLE_ESCAPE_START","_stateScriptDataDoubleEscapeStart","SCRIPT_DATA_DOUBLE_ESCAPED","_stateScriptDataDoubleEscaped","SCRIPT_DATA_DOUBLE_ESCAPED_DASH","_stateScriptDataDoubleEscapedDash","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH","_stateScriptDataDoubleEscapedDashDash","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN","_stateScriptDataDoubleEscapedLessThanSign","SCRIPT_DATA_DOUBLE_ESCAPE_END","_stateScriptDataDoubleEscapeEnd","BEFORE_ATTRIBUTE_NAME","_stateBeforeAttributeName","ATTRIBUTE_NAME","_stateAttributeName","AFTER_ATTRIBUTE_NAME","_stateAfterAttributeName","BEFORE_ATTRIBUTE_VALUE","_stateBeforeAttributeValue","_stateAttributeValueDoubleQuoted","_stateAttributeValueSingleQuoted","_stateAttributeValueUnquoted","AFTER_ATTRIBUTE_VALUE_QUOTED","_stateAfterAttributeValueQuoted","SELF_CLOSING_START_TAG","_stateSelfClosingStartTag","BOGUS_COMMENT","_stateBogusComment","MARKUP_DECLARATION_OPEN","_stateMarkupDeclarationOpen","COMMENT_START","_stateCommentStart","COMMENT_START_DASH","_stateCommentStartDash","_stateComment","COMMENT_LESS_THAN_SIGN","_stateCommentLessThanSign","COMMENT_LESS_THAN_SIGN_BANG","_stateCommentLessThanSignBang","COMMENT_LESS_THAN_SIGN_BANG_DASH","_stateCommentLessThanSignBangDash","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH","_stateCommentLessThanSignBangDashDash","COMMENT_END_DASH","_stateCommentEndDash","COMMENT_END","_stateCommentEnd","COMMENT_END_BANG","_stateCommentEndBang","_stateDoctype","BEFORE_DOCTYPE_NAME","_stateBeforeDoctypeName","DOCTYPE_NAME","_stateDoctypeName","AFTER_DOCTYPE_NAME","_stateAfterDoctypeName","AFTER_DOCTYPE_PUBLIC_KEYWORD","_stateAfterDoctypePublicKeyword","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER","_stateBeforeDoctypePublicIdentifier","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED","_stateDoctypePublicIdentifierDoubleQuoted","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED","_stateDoctypePublicIdentifierSingleQuoted","AFTER_DOCTYPE_PUBLIC_IDENTIFIER","_stateAfterDoctypePublicIdentifier","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS","_stateBetweenDoctypePublicAndSystemIdentifiers","AFTER_DOCTYPE_SYSTEM_KEYWORD","_stateAfterDoctypeSystemKeyword","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER","_stateBeforeDoctypeSystemIdentifier","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED","_stateDoctypeSystemIdentifierDoubleQuoted","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED","_stateDoctypeSystemIdentifierSingleQuoted","AFTER_DOCTYPE_SYSTEM_IDENTIFIER","_stateAfterDoctypeSystemIdentifier","BOGUS_DOCTYPE","_stateBogusDoctype","_stateCdataSection","CDATA_SECTION_BRACKET","_stateCdataSectionBracket","CDATA_SECTION_END","_stateCdataSectionEnd","CHARACTER_REFERENCE","_stateCharacterReference","NAMED_CHARACTER_REFERENCE","_stateNamedCharacterReference","AMBIGUOUS_AMPERSAND","_stateAmbiguousAmpersand","NUMERIC_CHARACTER_REFERENCE","_stateNumericCharacterReference","HEXADEMICAL_CHARACTER_REFERENCE_START","_stateHexademicalCharacterReferenceStart","HEXADEMICAL_CHARACTER_REFERENCE","_stateHexademicalCharacterReference","DECIMAL_CHARACTER_REFERENCE","_stateDecimalCharacterReference","NUMERIC_CHARACTER_REFERENCE_END","_stateNumericCharacterReferenceEnd","LESS_THAN_SIGN","unexpectedNullCharacter","_emitEOFToken","_emitChars","_createStartTagToken","EXCLAMATION_MARK","QUESTION_MARK","unexpectedQuestionMarkInsteadOfTagName","_createCommentToken","eofBeforeTagName","invalidFirstCharacterOfTagName","_createEndTagToken","missingEndTagName","emitCurrentTagToken","eofInTag","_cp","handleSpecialEndTag","HYPHEN_MINUS","eofInScriptHtmlCommentLikeText","$$","unexpectedEqualsSignBeforeAttributeName","_createAttr","_leaveAttrName","QUOTATION_MARK","APOSTROPHE","unexpectedCharacterInAttributeName","missingAttributeValue","GRAVE_ACCENT","unexpectedCharacterInUnquotedAttributeValue","missingWhitespaceBetweenAttributes","unexpectedSolidusInTag","emitCurrentComment","_consumeSequenceIfMatch","cdataInHtmlContent","incorrectlyOpenedComment","abruptClosingOfEmptyComment","eofInComment","nestedComment","incorrectlyClosedComment","eofInDoctype","_createDoctypeToken","emitCurrentDoctype","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","missingWhitespaceAfterDoctypePublicKeyword","missingDoctypePublicIdentifier","missingQuoteBeforeDoctypePublicIdentifier","abruptDoctypePublicIdentifier","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingQuoteBeforeDoctypeSystemIdentifier","missingWhitespaceAfterDoctypeSystemKeyword","missingDoctypeSystemIdentifier","abruptDoctypeSystemIdentifier","unexpectedCharacterAfterDoctypeSystemIdentifier","RIGHT_SQUARE_BRACKET","eofInCdata","NUMBER_SIGN","_flushCodePointConsumedAsCharacterReference","_reconsumeInState","matchResult","_matchNamedCharacterReference","unknownNamedCharacterReference","LATIN_SMALL_X","LATIN_CAPITAL_X","isAsciiHexDigit","nullCharacterReference","REPLACEMENT_CHARACTER","characterReferenceOutsideUnicodeRange","surrogateCharacterReference","noncharacterCharacterReference","controlCharacterReference","IMPLICIT_END_TAG_REQUIRED","IMPLICIT_END_TAG_REQUIRED_THOROUGHLY","SCOPING_ELEMENT_NS","NAMED_HEADERS","TABLE_ROW_CONTEXT","TABLE_BODY_CONTEXT","TABLE_CONTEXT","TABLE_CELLS","OpenElementStack","treeAdapter","tagIDs","stackTop","tmplCount","currentTagId","_isInTemplate","getTemplateContent","getNamespaceURI","onItemPush","popped","_updateCurrentElement","onItemPop","oldElement","newElement","_indexOf","referenceElement","newElementID","insertionIdx","targetIdx","shortenToLength","tagNames","targetNS","_indexOfTagNames","popUntilPopped","clearBackTo","elementIdx","exclusionId","EntryType","MARKER","Marker","FormattingElementList","bookmark","neAttrs","candidates","neAttrsLength","neTagName","getTagName","neNamespaceURI","elementAttrs","getAttrList","_getNoahArkConditionCandidates","neAttrsMap","neAttr","validCandidates","candidate","cAttr","_ensureNoahArkCondition","bookmarkIdx","entryIndex","markerIdx","createTextNode","parentNode","defaultTreeAdapter","createDocument","NO_QUIRKS","createDocumentFragment","namespaceURI","createCommentNode","newNode","referenceNode","setTemplateContent","templateElement","contentElement","setDocumentType","doctypeNode","setDocumentMode","getDocumentMode","detachNode","insertText","prevNode","isTextNode","insertTextBefore","adoptAttributes","recipient","recipientAttrsMap","getFirstChild","getChildNodes","getParentNode","getTextNodeContent","getCommentNodeContent","commentNode","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isCommentNode","isDocumentTypeNode","isElementNode","setNodeSourceCodeLocation","getNodeSourceCodeLocation","updateNodeSourceCodeLocation","endLocation","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","hasPrefix","prefixes","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","EXITS_FOREIGN_CONTENT","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","isIntegrationPoint","foreignNS","ENCODING","isHtmlIntegrationPoint","isMathMLTextIntegrationPoint","InsertionMode","BASE_LOC","TABLE_STRUCTURE_TAGS","defaultParserOptions","Parser","fragmentContext","scriptHandler","stopped","insertionMode","INITIAL","originalInsertionMode","headElement","formElement","currentNotInHTML","tmplInsertionModeStack","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","framesetOk","fosterParentingEnabled","tokenizer","activeFormattingElements","fragmentContextID","_setContextModes","openElements","TN","documentMock","IN_TEMPLATE","_initTokenizerForFragmentParsing","_insertFakeRootElement","_resetInsertionMode","_findFormInFragmentContext","rootElement","fragment","_adoptNodes","beforeToken","loc","tid","isTop","_setEndLocation","_this$openElements","isHTML","_isIntegrationPoint","nextTokenizerState","_insertElement","TEXT","IN_BODY","docTypeNode","startTag","_shouldFosterParentOnInsertion","_fosterParentElement","currentTmplContentOrNode","_attachElementToTree","tmpl","beforeElement","_this$_findFosterPare","_findFosterParentingLocation","textNodeIdx","_token$location","donor","closingToken","ctLoc","endLoc","endTag","_this$openElements2","_processStartTag","foreignContent","listLength","generateImpliedEndTags","popUntilTableCellPopped","clearToLastMarker","IN_ROW","generateImpliedEndTagsWithExclusion","popUntilTagNamePopped","IN_TABLE_BODY","IN_CAPTION","IN_COLUMN_GROUP","IN_TABLE","IN_FRAMESET","_resetInsertionModeForSelect","AFTER_HEAD","BEFORE_HEAD","IN_CELL","IN_HEAD","selectIdx","IN_SELECT_IN_TABLE","IN_SELECT","_isElementCausesFosterParenting","openElement","_insertCharacters","characterInForeignContent","tokenInInitialMode","BEFORE_HTML","tokenBeforeHtml","tokenBeforeHead","tokenInHead","IN_HEAD_NO_SCRIPT","tokenInHeadNoScript","tokenAfterHead","characterInBody","characterInTable","IN_TABLE_TEXT","characterInTableText","tokenInColumnGroup","AFTER_BODY","tokenAfterBody","AFTER_AFTER_BODY","tokenAfterAfterBody","nullCharacterInForeignContent","appendComment","AFTER_FRAMESET","tokenInTableText","_appendCommentNode","appendCommentToRootHtmlElement","AFTER_AFTER_FRAMESET","appendCommentToDocument","_setDocumentType","QUIRKS","LIMITED_QUIRKS","doctype","nonConformingDoctype","doctypeInInitialMode","misplacedDoctype","nonVoidHtmlElementStartTagWithTrailingSolidus","shouldProcessStartTagTokenInForeignContent","startTagToken","COLOR","SIZE","FACE","popUntilHtmlOrIntegrationPoint","_startTagOutsideForeignContent","_getAdjustedCurrentElement","currentNs","adjustedTagName","_appendElement","startTagInForeignContent","startTagBeforeHtml","startTagInBody","startTagBeforeHead","startTagInHead","nestedNoscriptInHead","startTagInHeadNoScript","abandonedHeadElementChild","misplacedStartTagForHeadElement","startTagAfterHead","startTagInTable","TABLE_VOID_ELEMENTS","hasInTableScope","startTagInCaption","startTagInColumnGroup","startTagInTableBody","startTagInRow","_closeTableCell","startTagInCell","startTagInSelect","startTagInSelectInTable","startTagInTemplate","startTagAfterBody","startTagInFrameset","startTagAfterFrameset","startTagAfterAfterBody","startTagAfterAfterFrameset","_endTagOutsideForeignContent","endTagInForeignContent","endTagBeforeHtml","endTagWithoutMatchingOpenElement","endTagBeforeHead","templateEndTagInHead","endTagInHead","endTagInHeadNoScript","endTagAfterHead","endTagInBody","endTagInText","endTagInTable","endTagInCaption","endTagInColumnGroup","endTagInTableBody","endTagInRow","endTagInCell","endTagInSelect","endTagInSelectInTable","endTagInTemplate","endTagAfterBody","isRootHtmlElementCurrent","endTagInFrameset","endTagAfterFrameset","eofInBody","eofInElementThatCanContainOnlyText","eofInText","eofInTemplate","stopParsing","unicode","whitespaceCharacterInBody","whitespaceCharacterInTableText","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","hasInScope","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","callAdoptionAgency","htmlElement","htmlLocation","bodyElement","bodyLocation","missingDoctype","_processToken","_insertFakeElement","_switchToTextParsing","_insertTemplate","insertMarker","generateImpliedEndTagsThoroughly","closingOfElementWithOpenChildElements","errCode","openElementsLeftAfterEof","disallowedContentInNoscriptInHead","modeInBody","_reconstructActiveFormattingElements","areaStartTagInBody","isHiddenInput","inputType","TYPE","noembedStartTagInBody","genericStartTagInBody","pushElement","bStartTagInBody","activeElementEntry","aStartTagInBody","hasInButtonScope","_closePElement","numberedHeaderStartTagInBody","addressStartTagInBody","elementId","listItemStartTagInBody","hrStartTagInBody","rbStartTagInBody","rtStartTagInBody","preStartTagInBody","xmpStartTagInBody","svgStartTagInBody","htmlStartTagInBody","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","tableStartTagInBody","inputStartTagInBody","paramStartTagInBody","imageStartTagInBody","buttonStartTagInBody","appletStartTagInBody","iframeStartTagInBody","selectStartTagInBody","optgroupStartTagInBody","popAllUpToHtmlElement","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","pEndTagInBody","addressEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","appletEndTagInBody","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","clearBackToTableBodyContext","hasTableBodyContextInTableScope","clearBackToTableRowContext","hasInSelectScope","VOID_ELEMENTS","isVoidElement","serializeOuter","serializeNode","serializeChildNodes","serializeAttributes","serializeElement","parentTn","serializeTextNode","serializeCommentNode","serializeDocumentTypeNode","enquoteDoctypeId","attribsNamespace","attribsPrefix","serializeDoctypeContent","lastChild","parseWithParse5","htmlparser2Adapter","parseDocument","getFragmentParser","getFragment","parseFragment","renderOpts","QuoteType","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","Zero","Nine","Sequences","Cdata","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","cbs","_ref$xmlMode","_ref$decodeEntities","sectionStart","baseState","isSpecial","currentSequence","sequenceIndex","trieIndex","trieCurrent","entityResult","entityExcess","entityTrie","finish","Lt","fastForwardTo","ontext","BeforeTagName","Amp","BeforeEntity","isEnd","InTagName","stateInTagName","endOfText","actualIndex","stateInClosingTagName","InCommentLike","InDeclaration","stateInDeclaration","oncdata","oncomment","isASCIIAlpha","sequence","SpecialStartSequence","ExclamationMark","BeforeDeclaration","Questionmark","InProcessingInstruction","isTagStartChar","lower","BeforeSpecialS","startSpecial","BeforeClosingTagName","stateText","onopentagname","BeforeAttributeName","stateBeforeAttributeName","InClosingTagName","InSpecialComment","onclosetag","AfterClosingTagName","stateAfterClosingTagName","onopentagend","InSpecialTag","InSelfClosingTag","InAttributeName","onselfclosingtag","Eq","onattribname","AfterAttributeName","stateAfterAttributeName","BeforeAttributeValue","onattribend","NoValue","DoubleQuote","InAttributeValueDq","SingleQuote","InAttributeValueSq","InAttributeValueNq","stateInAttributeValueNoQuotes","onattribdata","Double","Single","handleInAttributeValue","Unquoted","OpeningSquareBracket","CDATASequence","Dash","BeforeComment","ondeclaration","onprocessinginstruction","BeforeNumericEntity","InNamedEntity","stateInNamedEntity","emitNamedEntity","allowLegacyEntity","Semi","entityStart","emitPartial","LowerX","InHexEntity","InNumericEntity","stateInNumericEntity","strict","UpperF","LowerF","isHexDigit","shouldContinue","stateSpecialStartSequence","stateInSpecialTag","stateCDATASequence","stateInAttributeValueDoubleQuotes","stateInAttributeName","stateInCommentLike","stateInSpecialComment","stateBeforeTagName","stateInAttributeValueSingleQuotes","stateBeforeAttributeValue","stateBeforeClosingTagName","stateBeforeSpecialS","stateInSelfClosingTag","stateBeforeDeclaration","stateBeforeComment","stateInProcessingInstruction","stateBeforeEntity","stateInHexEntity","stateBeforeNumericEntity","cleanup","handleTrailingData","onend","onattribentity","ontextentity","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","openTagStart","tagname","attribname","attribvalue","foreignContext","bufferOffset","ended","lowerCaseTagNames","onparserinit","getSlice","getSectionStart","emitOpenTag","impliesClose","onopentag","isImplied","endOpenTag","_f","closeCurrentTag","recognizeSelfClosing","isOpenImplied","onattribute","getInstructionName","oncommentend","recognizeCDATA","oncdatastart","oncdataend","_h","_g","_k","_j","onreset","shiftBuffer","onerror","resume","parseWithHtmlparser2","renderWithHtmlparser2","_Array$prototype$spli","renderWithParse5","internalOpts","initialRoot","LoadedCheerio","_Cheerio","initialize","rootInstance","searchContext","staticMethods","Helper","$selector","valueText","fastselect","loadData","BasicForm","$elm","controllerUrl","listUrl","$upload","setEventListeners","on","onFormSubmit","$this","ajax","redirectSuccess","fail","errorMessage","responseText","ConsultantDetail","click","impersonateConsultant","email","Glide","users","impersonate","success","presentation","card","showError","HandlebarsContainer","template","Handlebars","registerHelpers","registerHelper","promise","initFastselect","LANGUAGE_STORAGE_KEY","DELETE_API_URL","InstrumentItemList","languageId","localStorage","getItem","Const","loadLanguages","loadItems","onItemClick","onDeleteItemsClick","onStoreOrderClick","onItemLanguageIdChange","setItem","parentid","languageID","rowHtml","_Object$keys","provider","initSortable","updateResultString","filteredCount","totalCount","contentType","app","toast","ids","dataType","trigger","attributeSelectors","hide","deleteItems","storeOrder","InstrumnetReportDetail","reportTextEditTemplate","controllerurl","editTemplate","HandlebarsTemplate","getTemplate","reportId","reportElementTypeID","currentLanguageId","currentKey","editContainer","editorForm","initView","showText","onSelectTab","onSelectLanguage","saveText","ev","currentTarget","editor","loadText","when","show","scrollTop","ItemDetail","itemSettings","controllerurltext","listurl","textContainer","templates","getInstrumentItem","loadTemplate","itemData","languageData","itemTypeSelect","con","saveRecord","onChangeItemType","textEditor","renderWhen","onSaveTranslation","onChangeTranslationLanguage","itemType","language","form","method","onSaveSuccess","$form","onSaveTranslationSuccess","ParticipantUpload","onTriggerUpload","FormData","processData","showDialogComplete","modaler","title","cancelVisible","confirmVisible","confirmText","glideReloadTable","ProjectGroupView","memberList","$memberListContainer","refreshList","addParticipantToGroup","removeParticipantFromGroup","resolveReferences","EDIT_API_URL","DETAIL_URL","COLUMNS","COLUMNS_D","COLUMN_NAMES","COLUMN_NAMES_D","VALUES","VALUES_D","FILTER_COLUMNS","FILTER_COLUMN_NAMES","PROJECTID","sessionIDs","groupBy","xs","rv","SortDirection","formatExpiryDate","dateString","getDate","getMonth","getFullYear","getHours","getMinutes","normalizeDate","setHours","initStateGroupAndSort","resultData","groupByColumn","filterColumns","sortByColumn","sortDirection","loadHeadings","setGroupByColumn","setFilterColumns","chartTable","chartWrapper","chartWidth","chartHeight","sizeChart","onAddClick","onGroupAllClick","onExpandAllClick","onSearchKeyUp","onCancelGroupingClick","onCancelFilteringClick","onGroupingClick","onFilteringClick","onHeadingClick","onRowBodyClick","onSingleHeaderRowClick","onHeaderArrowClick","onSelectAllCheckboxChange","onRowCheckboxChange","onItemCheckboxChange","onDeleteClick","onBulkEditClick","onEmailClick","onGroupingChange","ChangeEmail","maxWidth","overflowX","getBoundingClientRect","colspan","groupingColumn","cloneFilterColumns","filterColumn","directionIcon","colNumber","fontWeight","afterUpdateActions","sortData","updateHtmlForSortByColumn","filteredData","loopObject","column","sortedData","groupByColumnIndex","groupByColumnName","getHeadingsHtml","areThereAnyStrings","sortColumnValue","row","isExpired","groupedData","makegroupedcolumnleftcolumn","htmlForOneGroup","valueForSortColumnInThisGroup","columnValue","groupedRowHtml","groupId","groupKey","getValueForColumnInGroupedRow","UpdateValueForSortingTheGroups","getHtmlForGroupedRow","itemValues","itemRowHtml","getHtmlForItemRow","groupHtml","sortTheGroups","sesionTableHtml","resetButtonsAfterCheckboxChange","plural","uniqueParticipants","participantName","uniqueSubjects","subject","uniqueInstruments","instrumentAlias","allCompleted","expiryDates","sortedExpiryDates","_step3","countCompleted","_iterator3","_step4","countCompletedPercentage","_iterator4","percentage","progressBar","_step5","icon","created","started","finished","completed","expired","_iterator5","statusCounter","typeValue","uniqueTypes","uniquemailTypes","lastMailSendType","uniquemailDateTypes","lastMailSendText","formatDate","_step6","_iterator6","date","month","day","year","updateFilterOptions","reload","fieldvalues","sessions","fieldValues","getFilterOptionsHtml","columnsHtml","columnName","columns","getElementsByClassName","dataset","classList","itemId","hidden","hiddenClass","dateValue","checkedCount","filterColumnName","currentSelectedValues","onConfirm","onDeleteItemsConfirm","expireatField","querySelector","onBulkEditItemsConfirm","updateEmailList","editItems","indeterminate","rowCheckbox","getrowcheckboxbygroupid","td","$td","groupid","numChecked","numUnchecked","$parentRow","$target","isOpen","groupRow","expandRow","groupAll","expandAll","filterData","$root","updateHeadingsColor","newDirection","mailTemplateID","loadMailTemplateInstanceDataForEmail","_divCheckbox","divCheckbox","querySelectorAll","toggleButtons","emailButton","editFieldsButton","deleteButton","transferButton","cursor","EMAIL_COLUMNS","languages","languageListHtml","languageBodyHtml","uniqueMails","getRowHeaderHtml","getItemHtml","forceReload","editPanel","subjectContainer","bodyContainer","subjectInput","bodyInput","loadTheAdminProviders","badgeItem","changeLanguageBadge","projectsessions_removenavigationcolors","nav","projectsessions_setnavigationcolors","navFrom","navTo","projectsessions_shownextpane","paneFrom","paneTo","isPaneActive","pane","page","nextbutton","backbutton","sendmailbutton","mailtypepane","summarypane","confirmpane","mailtypenav","summarynav","confirmnav","mailType","customTemplates","customMailSubjects","mailtype","innerHTML","Sessions","MailTemplateAliasID","resultMessage","modal","alert","TYPES","QuickView","$targetPanel","$targetLoader","$targetContent","resultContext","boresultcontext","botype","onTriggerClick","loadHtml","loadIframe","iframeElement","boresourceurl","contentWindow","scripts","loadView","Singleton","Transient","VisualizationDetail","visualizationEditor","getVisualization","InstrumentReportDetail","ProjectSessionEmailModal","ProjectSessionsList","modulesJson","router","modulesIncludes","registerTransient"],"mappings":"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AAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,GAAG,YAAY,CAAC,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE,oBAAoB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,sBAAsB,CAAC,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,IAAI,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,GAAG,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,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SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,KAAK,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,eAAt8tB,IChBFE,EAAc,uBAErBC,EAAa,IAAI3E,IAAI,CACvB,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,GAAI,UACL,CAAC,GAAI,QACL,CAAC,GAAI,UAII4E,EAEuB,MAAhC16F,OAAOtjC,UAAUi+H,YACX,SAAChD,EAAa15H,GAAa,OAAa05H,EAAIgD,YAAY18H,IAExD,SAAC9C,EAAW8C,GAAa,OACc,QAAZ,MAAtB9C,EAAEiiG,WAAWn/F,IACyB,MAAhC9C,EAAEiiG,WAAWn/F,GAAS,OACvB9C,EAAEiiG,WAAWn/F,EAAQ,GACrB,MACA,MACA9C,EAAEiiG,WAAWn/F,IAS3B,SAAU28H,EAAUjD,GAKtB,IAJA,IAEI/5H,EAFAmwG,EAAM,GACN8sB,EAAU,EAG6B,QAAnCj9H,EAAQ48H,EAAYjqG,KAAKonG,KAAgB,CAC7C,IAAM78H,EAAI8C,EAAMK,MACVqsG,EAAOqtB,EAAIv6B,WAAWtiG,GACtButD,EAAOoyE,EAAW9+H,IAAI2uG,QAEfvtG,IAATsrD,GACA0lD,GAAO4pB,EAAI1pB,UAAU4sB,EAAS//H,GAAKutD,EACnCwyE,EAAU//H,EAAI,IAEdizG,GAAG,GAAAlmB,OAAO8vC,EAAI1pB,UAAU4sB,EAAS//H,GAAE,OAAA+sF,OAAM6yC,EACrC/C,EACA78H,GACF6C,SAAS,IAAG,KAEdk9H,EAAUL,EAAYvyE,WAAajrD,OACX,QAAZ,MAAPstG,KAKb,OAAOyD,EAAM4pB,EAAI14B,OAAO47B,GAwB5B,SAASC,EACL1sB,EACAl6E,GAEA,OAAO,SAAgBlO,GAKnB,IAJA,IAAIpoB,EACAi9H,EAAU,EACV3jE,EAAS,GAELt5D,EAAQwwG,EAAM79E,KAAKvK,IACnB60G,IAAYj9H,EAAMK,QAClBi5D,GAAUlxC,EAAKioF,UAAU4sB,EAASj9H,EAAMK,QAI5Ci5D,GAAUhjC,EAAIv4B,IAAIiC,EAAM,GAAGw/F,WAAW,IAGtCy9B,EAAUj9H,EAAMK,MAAQ,EAG5B,OAAOi5D,EAASlxC,EAAKioF,UAAU4sB,IAWbC,EAAW,WAAYL,GAA1C,IAQMM,EAAkBD,EAC3B,cACA,IAAIhF,IAAI,CACJ,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,IAAK,aAUDkF,EAAaF,EACtB,eACA,IAAIhF,IAAI,CACJ,CAAC,GAAI,SACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,IAAK,aC1Id,ICOYmF,EAOAC,GAPZ,SAAYD,GAERA,IAAA,aAEAA,IAAA,eAJJ,CAAYA,MAAW,KAOvB,SAAYC,GAKRA,IAAA,eAMAA,IAAA,iBAKAA,IAAA,yBAKAA,IAAA,yBAKAA,IAAA,eA1BJ,CAAYA,MAAY,KCjBjB,IAAMC,EAAe,IAAIrF,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,YACF5hG,KAAI,SAACknG,GAAG,MAAK,CAACA,EAAI/nC,cAAe+nC,OACtBC,EAAiB,IAAIvF,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,cACF5hG,KAAI,SAACknG,GAAG,MAAK,CAACA,EAAI/nC,cAAe+nC,O,usCCvFnC,IAAME,E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AAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,GAAG,YAAY,CAAC,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE,oBAAoB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,sBAAsB,CAAC,EAAE,WAAW,CAAC,GAAG,eAAe,CAAC,IAAI,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,GAAG,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,KAAK,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,yBAAyB,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,2BAA2B,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,gBAAgB9H,EAAE,KAAKhB,EAAE,iBAAiB,CAAC,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,EAAE,oBAAoB,CAAC,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,gBAAgB,CAAC,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,GAAG,0BAA0B,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,EAAE,kBAAkB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,kBAAkB,CAAC,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,EAAE,YAAY,CAAC,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,qBAAqB,CAAC,EAAE,sBAAsB,CAAC,EAAE,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,yBAAyB,CAAC,EAAE,WAAW,CAAC,EAAE,yBAAyB,CAAC,EAAE,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,EAAE,WAAW,CAAC,EAAE,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,EAAE,mBAAmB,CAAC,EAAE,sBAAsB,CAAC,EAAE,UAAU,CAAC,EAAE,0BAA0B,CAAC,EAAE,uBAAuB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,sBAAsB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,eAAe,CAAC,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,KAAKhB,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,uBAAuB,CAAC,EAAE,0BAA0B,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,MAAMhB,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,MAAMhB,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,8BAA8B,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,KAAKhB,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,YAAY9H,EAAE,IAAIhB,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,IAAIhB,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,mBAAmB,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC8I,EAAE,YAAY9H,EAAE,KAAKhB,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,aAAa,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC8I,EAAE,cAAc9H,EAAE,KAAKhB,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,KAAKhB,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,KAAKhB,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,IAAIhB,EAAE,UAAU,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,IAAIhB,EAAE,UAAU,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,MAAMhB,EAAE,gBAAgB,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,MAAMhB,EAAE,gBAAgB,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,IAAIu5H,IAAkCwE,GAAY,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,cAAc,CAAC,EAAE,CAACj2H,EAAE,OAAO9H,EAAE,IAAIu5H,IAAkCwE,GAAY,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,EAAE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAACj2H,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,KAAKhB,EAAE,gBAAgB,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,KAAKhB,EAAE,kBAAkB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,MAAMhB,EAAE,mBAAmB,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,MAAMhB,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,sBAAsB,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,wBAAwB,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,MAAMhB,EAAE,aAAa,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,MAAMhB,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,EAAE,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC8I,EAAE,sBAAsB9H,EAAE,KAAKhB,EAAE,cAAc,CAAC,EAAE,CAAC8I,EAAE,uBAAuB9H,EAAE,KAAKhB,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,mBAAmB,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,EAAE,eAAe,CAAC,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,IAAIhB,EAAE,UAAU,CAAC,EAAE,CAAC8I,EAAE,OAAO9H,EAAE,IAAIhB,EAAE,UAAU,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,MAAMhB,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,MAAMhB,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,2BAA2B,CAAC,EAAE,2BAA2B,CAAC,EAAE,0BAA0B,CAAC,EAAE,4BAA4B,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,sBAAsB,CAAC,EAAE,YAAY,CAAC,EAAE,2BAA2B,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,YAAY9H,EAAE,IAAIhB,EAAE,eAAe,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,GAAG,aAAa,CAAC,GAAG,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,EAAE,UAAU,CAAC,EAAE,cAAc,CAAC,GAAG,qBAAqB,CAAC,EAAE,sBAAsB,CAAC,EAAE,eAAe,CAAC,EAAE,gBAAgB,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,CAAC,IAAI,cAAc,CAAC,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,EAAE,iBAAiB,CAAC,EAAE,0BAA0B,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,EAAE,cAAc,CAAC,EAAE,wBAAwB,CAAC,EAAE,UAAU,CAAC,EAAE,qBAAqB,CAAC,EAAE,uBAAuB,CAAC,EAAE,UAAU,CAAC,EAAE,uBAAuB,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,sBAAsB,CAAC,EAAE,uBAAuB,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,IAAI,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,uBAAuB,CAAC,GAAG,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,cAAc,CAAC,EAAE,aAAa,CAAC,GAAG,uBAAuB,CAAC,EAAE,wBAAwB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,EAAE,yBAAyB,CAAC,EAAE,0BAA0B,CAAC,EAAE,8BAA8B,CAAC,EAAE,gBAAgB,CAAC,EAAE,cAAc,CAAC,IAAI,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,IAAIhB,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,qBAAqB,CAAC,EAAE,uBAAuB,CAAC,EAAE,yBAAyB,CAAC,EAAE,sBAAsB,CAAC,EAAE,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,EAAE,wBAAwB,CAAC,EAAE,uBAAuB,CAAC,EAAE,wBAAwB,CAAC,EAAE,qBAAqB,CAAC,EAAE,uBAAuB,CAAC,EAAE,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,EAAE,sBAAsB,CAAC,EAAE,wBAAwB,CAAC,EAAE,uBAAuB,CAAC,EAAE,wBAAwB,CAAC,EAAE,qBAAqB,CAAC,EAAE,uBAAuB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC8I,EAAE,oBAAoB9H,EAAE,IAAIhB,EAAE,yBAAyB,CAAC,EAAE,CAAC8I,EAAE,qBAAqB9H,EAAE,IAAIhB,EAAE,0BAA0B,CAAC,GAAG,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,GAAG,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,YAAY9H,EAAE,IAAIhB,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,IAAIhB,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC8I,EAAE,aAAa9H,EAAE,IAAIhB,EAAE,gBAAgB,CAAC,EAAE,CAAC8I,EAAE,aAAa9H,EAAE,IAAIhB,EAAE,gBAAgB,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,aAAa9H,EAAE,IAAIhB,EAAE,wBAAwB,CAAC,EAAE,CAAC8I,EAAE,mBAAmB9H,EAAE,IAAIhB,EAAE,8BAA8B,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,MAAMhB,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,MAAMhB,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC8I,EAAE,kBAAkB9H,EAAE,IAAIhB,EAAE,uBAAuB,CAAC,EAAE,CAAC8I,EAAE,QAAQ9H,EAAE,IAAIhB,EAAE,uBAAuB,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,SAAS9H,EAAE,IAAIhB,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,MAAMhB,EAAE,oBAAoB,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,MAAMhB,EAAE,oBAAoB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC8I,EAAE,UAAU9H,EAAE,KAAKhB,EAAE,aAAa,CAAC,MAAM,CAACgB,EAAE,IAAIu5H,IAAkCwE,GAAY,CAAC,CAAC,MAAM,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,KAAK,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,eAAt8tB,IChBFE,GAAc,uBAErBC,GAAa,IAAI3E,IAAI,CACvB,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,GAAI,UACL,CAAC,GAAI,QACL,CAAC,GAAI,UAII4E,GAEuB,MAAhC16F,OAAOtjC,UAAUi+H,YACX,SAAChD,EAAa15H,GAAa,OAAa05H,EAAIgD,YAAY18H,IAExD,SAAC9C,EAAW8C,GAAa,OACc,QAAZ,MAAtB9C,EAAEiiG,WAAWn/F,IACyB,MAAhC9C,EAAEiiG,WAAWn/F,GAAS,OACvB9C,EAAEiiG,WAAWn/F,EAAQ,GACrB,MACA,MACA9C,EAAEiiG,WAAWn/F,IAS3B,SAAU28H,GAAUjD,GAKtB,IAJA,IAEI/5H,EAFAmwG,EAAM,GACN8sB,EAAU,EAG6B,QAAnCj9H,EAAQ48H,GAAYjqG,KAAKonG,KAAgB,CAC7C,IAAM78H,EAAI8C,EAAMK,MACVqsG,EAAOqtB,EAAIv6B,WAAWtiG,GACtButD,EAAOoyE,GAAW9+H,IAAI2uG,QAEfvtG,IAATsrD,GACA0lD,GAAO4pB,EAAI1pB,UAAU4sB,EAAS//H,GAAKutD,EACnCwyE,EAAU//H,EAAI,IAEdizG,GAAG,GAAAlmB,OAAO8vC,EAAI1pB,UAAU4sB,EAAS//H,GAAE,OAAA+sF,OAAM6yC,GACrC/C,EACA78H,GACF6C,SAAS,IAAG,KAEdk9H,EAAUL,GAAYvyE,WAAajrD,OACX,QAAZ,MAAPstG,KAKb,OAAOyD,EAAM4pB,EAAI14B,OAAO47B,GAwB5B,SAASC,GACL1sB,EACAl6E,GAEA,OAAO,SAAgBlO,GAKnB,IAJA,IAAIpoB,EACAi9H,EAAU,EACV3jE,EAAS,GAELt5D,EAAQwwG,EAAM79E,KAAKvK,IACnB60G,IAAYj9H,EAAMK,QAClBi5D,GAAUlxC,EAAKioF,UAAU4sB,EAASj9H,EAAMK,QAI5Ci5D,GAAUhjC,EAAIv4B,IAAIiC,EAAM,GAAGw/F,WAAW,IAGtCy9B,EAAUj9H,EAAMK,MAAQ,EAG5B,OAAOi5D,EAASlxC,EAAKioF,UAAU4sB,IAWbC,GAAW,WAAYL,IAA1C,IAQMM,GAAkBD,GAC3B,cACA,IAAIhF,IAAI,CACJ,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,IAAK,aAUDkF,GAAaF,GACtB,eACA,IAAIhF,IAAI,CACJ,CAAC,GAAI,SACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,IAAK,aC1Id,ICOYmF,GAOAC,IAPZ,SAAYD,GAERA,IAAA,aAEAA,IAAA,eAJJ,CAAYA,QAAW,KAOvB,SAAYC,GAKRA,IAAA,eAMAA,IAAA,iBAKAA,IAAA,yBAKAA,IAAA,yBAKAA,IAAA,eA1BJ,CAAYA,QAAY,KkQjBjB,IAAMC,GAAe,IAAIrF,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,YACF5hG,KAAI,SAACknG,GAAG,MAAK,CAACA,EAAI/nC,cAAe+nC,OACtBC,GAAiB,IAAIvF,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,cACF5hG,KAAI,SAACknG,GAAG,MAAK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","file":"project.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 207);\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nvar REVISION = '106';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar ACESFilmicToneMapping = 5;\n\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: ( function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar lut = [];\n\n\t\tfor ( var i = 0; i < 256; i ++ ) {\n\n\t\t\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n\t\t}\n\n\t\treturn function generateUUID() {\n\n\t\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\t\tvar uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\n\t\t\t\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\n\n\t\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\t\treturn uuid.toUpperCase();\n\n\t\t};\n\n\t} )(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar EPS = 0.000001;\n\n\t\tvar r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function reflect( normal ) {\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tvar sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar _canvas;\n\nvar ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tvar canvas;\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t} else if ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tvar context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tvar output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tvar url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\t// this method does not support reflection matrices\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\t\tte[ 3 ] = 0;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\t\tte[ 7 ] = 0;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function () {\n\n\t\tvar zero = new Vector3( 0, 0, 0 );\n\t\tvar one = new Vector3( 1, 1, 1 );\n\n\t\treturn function makeRotationFromQuaternion( q ) {\n\n\t\t\treturn this.compose( zero, q, one );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar x = new Vector3();\n\t\tvar y = new Vector3();\n\t\tvar z = new Vector3();\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target );\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t// eye and target are in the same position\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tz.normalize();\n\t\t\tx.crossVectors( up, z );\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t// up and z are parallel\n\n\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t}\n\n\t\t\tx.normalize();\n\t\t\ty.crossVectors( z, x );\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tvar te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\t\t\tmatrix.copy( this );\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nvar object3DId = 0;\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateOnWorldAxis: function () {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnWorldAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.premultiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tvar q1 = new Quaternion();\n\t\tvar m1 = new Matrix4();\n\t\tvar target = new Vector3();\n\t\tvar position = new Vector3();\n\n\t\treturn function lookAt( x, y, z ) {\n\n\t\t\tif ( x.isVector3 ) {\n\n\t\t\t\ttarget.copy( x );\n\n\t\t\t} else {\n\n\t\t\t\ttarget.set( x, y, z );\n\n\t\t\t}\n\n\t\t\tvar parent = this.parent;\n\n\t\t\tthis.updateWorldMatrix( true, false );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t\tm1.lookAt( position, target, this.up );\n\n\t\t\t} else {\n\n\t\t\t\tm1.lookAt( target, position, this.up );\n\n\t\t\t}\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t\tif ( parent ) {\n\n\t\t\t\tm1.extractRotation( parent.matrixWorld );\n\t\t\t\tq1.setFromRotationMatrix( m1 );\n\t\t\t\tthis.quaternion.premultiply( q1.inverse() );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function () {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tvar m = new Matrix4();\n\n\t\treturn function attach( object ) {\n\n\t\t\tthis.updateWorldMatrix( true, false );\n\n\t\t\tm.getInverse( this.matrixWorld );\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t\tm.multiply( object.parent.matrixWorld );\n\n\t\t\t}\n\n\t\t\tobject.applyMatrix( m );\n\n\t\t\tobject.updateWorldMatrix( false, false );\n\n\t\t\tthis.add( object );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\t\ttarget = new Quaternion();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, target, scale );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, target );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode;\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar scope, i, l;\n\n\t\tvar v1 = new Vector3();\n\n\t\tfunction traverse( node ) {\n\n\t\t\tvar geometry = node.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function expandByObject( object ) {\n\n\t\t\tscope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tobject.traverse( traverse );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: ( function () {\n\n\t\t// triangle centered vertices\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\t// triangle edge vectors\n\t\tvar f0 = new Vector3();\n\t\tvar f1 = new Vector3();\n\t\tvar f2 = new Vector3();\n\n\t\tvar testAxis = new Vector3();\n\n\t\tvar center = new Vector3();\n\t\tvar extents = new Vector3();\n\n\t\tvar triangleNormal = new Vector3();\n\n\t\tfunction satForAxes( axes ) {\n\n\t\t\tvar i, j;\n\n\t\t\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t\t\ttestAxis.fromArray( axes, i );\n\t\t\t\t// project the aabb onto the seperating axis\n\t\t\t\tvar r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z );\n\t\t\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\t\t\tvar p0 = v0.dot( testAxis );\n\t\t\t\tvar p1 = v1.dot( testAxis );\n\t\t\t\tvar p2 = v2.dot( testAxis );\n\t\t\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\t\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t\t// the axis is seperating and we can exit\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn function intersectsTriangle( triangle ) {\n\n\t\t\tif ( this.isEmpty() ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// compute box center and extents\n\t\t\tthis.getCenter( center );\n\t\t\textents.subVectors( this.max, center );\n\n\t\t\t// translate triangle to aabb origin\n\t\t\tv0.subVectors( triangle.a, center );\n\t\t\tv1.subVectors( triangle.b, center );\n\t\t\tv2.subVectors( triangle.c, center );\n\n\t\t\t// compute edge vectors for triangle\n\t\t\tf0.subVectors( v1, v0 );\n\t\t\tf1.subVectors( v2, v1 );\n\t\t\tf2.subVectors( v0, v2 );\n\n\t\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// 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\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\t\tvar axes = [\n\t\t\t\t0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y,\n\t\t\t\tf0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x,\n\t\t\t\t- f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0\n\t\t\t];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// test 3 face normals from the aabb\n\t\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\t\t\ttriangleNormal.crossVectors( f0, f1 );\n\t\t\taxes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ];\n\t\t\treturn satForAxes( axes );\n\n\t\t};\n\n\t} )(),\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t\t}\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// 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.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif ( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, target ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, target );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, target );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function () {\n\n\t\tvar v0 = new Vector3();\n\n\t\treturn function getNormal( a, b, c, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\ttarget.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\ttarget.cross( v0 );\n\n\t\t\tvar targetLengthSq = target.lengthSq();\n\t\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn target.set( 0, 0, 0 );\n\n\t\t};\n\n\t}(),\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function getBarycoord( point, a, b, c, target ) {\n\n\t\t\tv0.subVectors( c, a );\n\t\t\tv1.subVectors( b, a );\n\t\t\tv2.subVectors( point, a );\n\n\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\t// collinear or singular triangle\n\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t\t}\n\n\t\t\tvar invDenom = 1 / denom;\n\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t// barycentric coordinates must always sum to 1\n\t\t\treturn target.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tTriangle.getBarycoord( point, a, b, c, v1 );\n\n\t\t\treturn ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 );\n\n\t\t};\n\n\t}(),\n\n\tgetUV: function () {\n\n\t\tvar barycoord = new Vector3();\n\n\t\treturn function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\t\tthis.getBarycoord( point, p1, p2, p3, barycoord );\n\n\t\t\ttarget.set( 0, 0 );\n\t\t\ttarget.addScaledVector( uv1, barycoord.x );\n\t\t\ttarget.addScaledVector( uv2, barycoord.y );\n\t\t\ttarget.addScaledVector( uv3, barycoord.z );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tisFrontFacing: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function isFrontFacing( a, b, c, direction ) {\n\n\t\t\tv0.subVectors( c, b );\n\t\t\tv1.subVectors( a, b );\n\n\t\t\t// strictly front facing\n\t\t\treturn ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false;\n\n\t\t};\n\n\t}()\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getArea() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar vab = new Vector3();\n\t\tvar vac = new Vector3();\n\t\tvar vbc = new Vector3();\n\t\tvar vap = new Vector3();\n\t\tvar vbp = new Vector3();\n\t\tvar vcp = new Vector3();\n\n\t\treturn function closestPointToPoint( p, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar a = this.a, b = this.b, c = this.c;\n\t\t\tvar v, w;\n\n\t\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t\tvab.subVectors( b, a );\n\t\t\tvac.subVectors( c, a );\n\t\t\tvap.subVectors( p, a );\n\t\t\tvar d1 = vab.dot( vap );\n\t\t\tvar d2 = vac.dot( vap );\n\t\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\t\treturn target.copy( a );\n\n\t\t\t}\n\n\t\t\tvbp.subVectors( p, b );\n\t\t\tvar d3 = vab.dot( vbp );\n\t\t\tvar d4 = vac.dot( vbp );\n\t\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\t\treturn target.copy( b );\n\n\t\t\t}\n\n\t\t\tvar vc = d1 * d4 - d3 * d2;\n\t\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\t\treturn target.copy( a ).addScaledVector( vab, v );\n\n\t\t\t}\n\n\t\t\tvcp.subVectors( p, c );\n\t\t\tvar d5 = vab.dot( vcp );\n\t\t\tvar d6 = vac.dot( vcp );\n\t\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\t\treturn target.copy( c );\n\n\t\t\t}\n\n\t\t\tvar vb = d5 * d2 - d1 * d6;\n\t\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\t\treturn target.copy( a ).addScaledVector( vac, w );\n\n\t\t\t}\n\n\t\t\tvar va = d3 * d6 - d5 * d4;\n\t\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t\tvbc.subVectors( c, b );\n\t\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\t\treturn target.copy( b ).addScaledVector( vbc, w ); // edge region of BC\n\n\t\t\t}\n\n\t\t\t// face region\n\t\t\tvar denom = 1 / ( va + vb + vc );\n\t\t\t// u = va * denom\n\t\t\tv = vb * denom;\n\t\t\tw = vc * denom;\n\t\t\treturn target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = _Math.euclideanModulo( h, 1 );\n\t\ts = _Math.clamp( s, 0, 1 );\n\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function () {\n\n\t\tvar hsl = {};\n\n\t\treturn function ( h, s, l ) {\n\n\t\t\tthis.getHSL( hsl );\n\n\t\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function () {\n\n\t\tvar hslA = { h: 0, s: 0, l: 0 };\n\t\tvar hslB = { h: 0, s: 0, l: 0 };\n\n\t\treturn function lerpHSL( color, alpha ) {\n\n\t\t\tthis.getHSL( hslA );\n\t\t\tcolor.getHSL( hslB );\n\n\t\t\tvar h = _Math.lerp( hslA.h, hslB.h, alpha );\n\t\t\tvar s = _Math.lerp( hslA.s, hslB.s, alpha );\n\t\t\tvar l = _Math.lerp( hslA.l, hslB.l, alpha );\n\n\t\t\tthis.setHSL( h, s, l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexTangents = false;\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.userData = {};\n\n\tthis.needsUpdate = true;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\n\t\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: bufferGeometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToBufferAttribute( position );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToBufferAttribute( normal );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tvar tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\t// Tangent is vec4, but the '.w' component is a sign value (+1/-1).\n\t\t\tnormalMatrix.applyToBufferAttribute( tangent );\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function computeBoundingBox() {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new Box3();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\t\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t\tbox.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( box.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( box.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t\t}\n\n\t\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar boxMorphTargets = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\t\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif ( position ) {\n\n\t\t\t\t// first, find the center of the bounding sphere\n\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromBufferAttribute( position );\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t\tboxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\t\tbox.expandByPoint( boxMorphTargets.min );\n\t\t\t\t\t\tbox.expandByPoint( boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t\tvector.fromBufferAttribute( position, i );\n\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvector.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeOffset = attribute2.itemSize * offset;\n\t\t\tvar length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar vector = new Vector3();\n\n\t\treturn function normalizeNormals() {\n\n\t\t\tvar normals = this.attributes.normal;\n\n\t\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t\tvector.x = normals.getX( i );\n\t\t\t\tvector.y = normals.getY( i );\n\t\t\t\tvector.z = normals.getZ( i );\n\n\t\t\t\tvector.normalize();\n\n\t\t\t\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.addAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = this.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar morphArray = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( var i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = morphAttribute[ i ];\n\n\t\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = this.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tvar morphAttributes = {};\n\t\tvar hasMorphAttributes = false;\n\n\t\tfor ( var key in this.morphAttributes ) {\n\n\t\t\tvar attributeArray = this.morphAttributes[ key ];\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = attributeArray[ i ];\n\n\t\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes;\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar name, i, l;\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar morphA = new Vector3();\n\t\tvar morphB = new Vector3();\n\t\tvar morphC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( position, a );\n\t\t\tvB.fromBufferAttribute( position, b );\n\t\t\tvC.fromBufferAttribute( position, c );\n\n\t\t\tvar morphInfluences = object.morphTargetInfluences;\n\n\t\t\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t\t\tmorphA.set( 0, 0, 0 );\n\t\t\t\tmorphB.set( 0, 0, 0 );\n\t\t\t\tmorphC.set( 0, 0, 0 );\n\n\t\t\t\tfor ( var i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar influence = morphInfluences[ i ];\n\t\t\t\t\tvar morphAttribute = morphPosition[ i ];\n\n\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\ttempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t\t\ttempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t\t\ttempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\t\t\tmorphA.addScaledVector( tempA.sub( vA ), influence );\n\t\t\t\t\tmorphB.addScaledVector( tempB.sub( vB ), influence );\n\t\t\t\t\tmorphC.addScaledVector( tempC.sub( vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t\tvA.add( morphA );\n\t\t\t\tvB.add( morphB );\n\t\t\t\tvC.add( morphC );\n\n\t\t\t}\n\n\t\t\tvar intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uv ) {\n\n\t\t\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t\tvar face = new Face3( a, b, c );\n\t\t\t\tTriangle.getNormal( vA, vB, vC, face.normal );\n\n\t\t\t\tintersection.face = face;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar intersection;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar position = geometry.attributes.position;\n\t\t\t\tvar morphPosition = geometry.morphAttributes.position;\n\t\t\t\tvar uv = geometry.attributes.uv;\n\t\t\t\tvar groups = geometry.groups;\n\t\t\t\tvar drawRange = geometry.drawRange;\n\t\t\t\tvar i, j, il, jl;\n\t\t\t\tvar group, groupMaterial;\n\t\t\t\tvar start, end;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t// indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = i;\n\t\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar uvs;\n\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar geometryId = 0; // Geometry uses even numbers as Id\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: geometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( var i = 0; i < positions.length; i += 3 ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromArray( positions, i ) );\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromArray( colors, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexColors = ( colors === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone() ];\n\n\t\t\tvar vertexNormals = ( normals === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromArray( normals, a * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, b * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, c * 3 )\n\t\t\t];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs2, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\t\tuvs2 = geometry.faceVertexUvs[ 0 ],\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n// BoxBufferGeometry\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\twidth = width || 1;\n\theight = height || 1;\n\tdepth = depth || 1;\n\n\t// segments\n\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar numberOfVertices = 0;\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth = width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar ix, iy;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// uvs\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t// counters\n\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// increase counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tvar dst = {};\n\n\tfor ( var u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( var p in src[ u ] ) {\n\n\t\t\tvar property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tvar merged = {};\n\n\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\tvar tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( var p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( var name in this.uniforms ) {\n\n\t\tvar uniform = this.uniforms[ name ];\n\t\tvar value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tvar extensions = {};\n\n\tfor ( var key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, cubeResolution, options ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\toptions = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\nWebGLRenderTargetCube.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tvar scene = new Scene();\n\n\tvar shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include \",\n\t\t\t\"\t#include \",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#define RECIPROCAL_PI 0.31830988618\",\n\t\t\t\"#define RECIPROCAL_PI2 0.15915494\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV;\",\n\n\t\t\t\"\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\",\n\n\t\t\t\"\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tvar material = new ShaderMaterial( {\n\n\t\ttype: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tvar mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tvar camera = new CubeCamera( 1, 10, 1 );\n\n\tcamera.renderTarget = this;\n\tcamera.renderTarget.texture.name = 'CubeCameraTexture';\n\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn target.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\t// corner at max distance\n\n\t\t\t\tp.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tif ( plane.distanceToPoint( p ) < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar 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( PHYSICAL )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\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\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\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};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale = bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = normalMatrix * objectTangent;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar 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 = min( floor( D ) / 255.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}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\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\";\n\nvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = 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;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\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#endif\";\n\nvar lights_pars_begin = \"uniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.clearCoat = saturate( clearCoat );\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 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#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#endif\\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#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearCoatInv = 1.0 - clearCoatDHR;\\n\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec3 singleScattering = vec3( 0.0 );\\n\\t\\tvec3 multiScattering = vec3( 0.0 );\\n\\t\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\t\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\\n\\t\\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\\n\\t\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n\\t#else\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\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\\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\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}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\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#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * 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( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#ifndef STANDARD\\n\\t\\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar 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, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\tgl_Position.z *= gl_Position.w;\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\";\n\nvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform mat3 uvTransform;\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t#ifdef FLIP_SIDED\\n\\t\\t\\tnormal = - normal;\\n\\t\\t#endif\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\tnormal = normalize( normalMatrix * normal );\\n\\t#else\\n\\t\\t#ifdef USE_TANGENT\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy = normalScale * mapN.xy;\\n\\t\\t\\tnormal = normalize( vTBN * mapN );\\n\\t\\t#else\\n\\t\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n\\t\\t#endif\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tuniform mat3 normalMatrix;\\n\\t#else\\n\\t\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\\t\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy *= normalScale;\\n\\t\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\treturn normalize( tsn * mapN );\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar 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}\\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}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#if defined( DITHERING )\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#if defined( 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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\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 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\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\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 )\\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\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\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}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\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 ACESFilmicToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\\n}\";\n\nvar uv_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\";\n\nvar 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}\";\n\nvar 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}\";\n\nvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nvar 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}\";\n\nvar 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 \\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\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include \\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}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar 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}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar 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 \\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\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar 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 \\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\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar 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}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar 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 \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\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\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar 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 = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\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}\";\n\nvar 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}\";\n\nvar shadow_vert = \"#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar 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 = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\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}\";\n\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl ) {\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.dynamic ? 35048 : 35044;\n\n\t\tvar buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tvar type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( attribute.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, array, 35044 );\n\n\t\t} else if ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else if ( updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeMesh;\n\tvar boxMesh;\n\t// Store the current background texture and its `version`\n\t// so we can recompile the material accordingly.\n\tvar currentBackground = null;\n\tvar currentBackgroundVersion = 0;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tvar vr = renderer.vr;\n\t\tvar session = vr.getSession && vr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\t\t\tcurrentBackground = null;\n\t\t\tcurrentBackgroundVersion = 0;\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\t\t\tcurrentBackground = null;\n\t\t\tcurrentBackgroundVersion = 0;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.removeAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.removeAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.tCube.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tvar texture = background.isWebGLRenderTargetCube ? background.texture : background;\n\t\t\tboxMesh.material.uniforms.tCube.value = texture;\n\t\t\tboxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t currentBackgroundVersion !== texture.version ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.removeAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\t currentBackgroundVersion !== background.version ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( 34930 );\n\tvar maxVertexTextures = gl.getParameter( 35660 );\n\tvar maxTextureSize = gl.getParameter( 3379 );\n\tvar maxCubemapSize = gl.getParameter( 34076 );\n\n\tvar maxAttributes = gl.getParameter( 34921 );\n\tvar maxVertexUniforms = gl.getParameter( 36347 );\n\tvar maxVaryings = gl.getParameter( 36348 );\n\tvar maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tvar maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = {};\n\tvar wireframeAttributes = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tvar attribute = wireframeAttributes[ buffergeometry.id ];\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\tdelete wireframeAttributes[ buffergeometry.id ];\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( attribute ) return attribute;\n\n\t\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = geometryAttributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tattribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\n\t\tattributes.update( attribute, 34963 );\n\n\t\twireframeAttributes[ geometry.id ] = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\tcase 6:\n\t\t\t\trender.triangles += instanceCount * ( count - 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\tvar length = objectInfluences.length;\n\n\t\tvar influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\t// Add morphAttributes\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( geometries, info ) {\n\n\tvar updateList = {};\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data, width: width, height: height, depth: depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tvar texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data, width: width, height: height, depth: depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyTexture2dArray = new DataTexture2DArray();\nvar emptyTexture3d = new DataTexture3D();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( var i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( var i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n\t\tcase 0x8b5f: return setValueT3D1; // SAMPLER_3D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\t\tcase 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1Array; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6Array; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tvar cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tvar n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tvar status = gl.getShaderParameter( shader, 35713 );\n\tvar log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tvar source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) {\n\n\tvar gl = renderer.context;\n\n\tvar defines = material.defines;\n\n\tvar vertexShader = shader.vertexShader;\n\tvar fragmentShader = shader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ?\n\t\t\t\tShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) {\n\n\t\tvar isGLSL3ShaderMaterial = false;\n\n\t\tvar versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( material.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tvar runnable = true;\n\t\tvar haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tvar vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tvar fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\t\t\t\tmaterial: material,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = shader.name;\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar bones = skeleton.bones;\n\n\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\t\tvar precision = capabilities.precision;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\tarray.push( material.onBeforeCompile.toString() );\n\n\t\tarray.push( renderer.gammaOutput );\n\n\t\tarray.push( renderer.gammaFactor );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, shader, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tvar defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort() {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = {};\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tdelete lists[ scene.id ];\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar cameras = lists[ scene.id ];\n\t\tvar list;\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists[ scene.id ] = {};\n\t\t\tlists[ scene.id ][ camera.id ] = list;\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras[ camera.id ];\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras[ camera.id ] = list;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nvar nextVersion = 0;\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\t\t\tshadowsLength: - 1,\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( var j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t}\n\n\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tvar hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.shadowsLength !== shadows.length ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\t\t\thash.shadowsLength = shadows.length;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = {};\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tdelete renderStates[ scene.id ];\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar renderState;\n\n\t\tif ( renderStates[ scene.id ] === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates[ scene.id ] = {};\n\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates[ scene.id ][ camera.id ] === undefined ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates[ scene.id ][ camera.id ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_shadowMapSize = new Vector2(),\n\t\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\n\n\t\t_lookTarget = new Vector3(),\n\t\t_lightPositionWorld = new Vector3(),\n\n\t\t_MorphingFlag = 1,\n\t\t_SkinningFlag = 2,\n\n\t\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t\t_materialCache = {};\n\n\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = new MeshDepthMaterial( {\n\n\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t//\n\n\t\tvar distanceMaterial = new MeshDistanceMaterial( {\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tvar currentRenderTarget = _renderer.getRenderTarget();\n\t\tvar activeCubeFace = _renderer.getActiveCubeFace();\n\t\tvar activeMipMapLevel = _renderer.getActiveMipMapLevel();\n\n\t\tvar _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount;\n\n\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar shadow = light.shadow;\n\t\t\tvar isPointLight = light && light.isPointLight;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.isSpotLightShadow ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tfaceCount = 6;\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\n\t\t\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\n\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t}\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\trenderObject( scene, camera, shadowCamera, isPointLight );\n\n\t\t\t}\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipMapLevel );\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isSkinnedMesh && material.skinning === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tresult.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.isMeshDistanceMaterial ) {\n\n\t\t\tresult.referencePosition.copy( lightPositionWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, utils, capabilities ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( 34921 );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar enabledCapabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentProgram = null;\n\n\tvar currentBlendingEnabled = null;\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( 35661 );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tvar extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_astc' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( 34467 );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tvar flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tenabledCapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar _videoTextures = {};\n\tvar _canvas;\n\n\t//\n\n\tvar useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined';\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tvar scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tvar floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tvar width = floor( scale * image.width );\n\t\t\t\tvar height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tvar canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( capabilities.isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( glFormat, glType ) {\n\n\t\tif ( ! capabilities.isWebGL2 ) return glFormat;\n\n\t\tvar internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t} else if ( internalFormat === 34843 || internalFormat === 34837 ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\tdelete _videoTextures[ texture.id ];\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tvar textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tvar textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\t\tvar isCompressed = ( texture && texture.isCompressedTexture );\n\t\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tsupportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2,\n\t\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tvar extension;\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tvar textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tvar needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tvar image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\n\t\tvar supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\n\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t} else if ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tglInternalFormat = 33189;\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( 3553, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\t\tvar isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tvar width = renderTarget.width;\n\t\t\t\tvar height = renderTarget.height;\n\t\t\t\tvar mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( capabilities.maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tvar id = texture.id;\n\t\tvar frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures[ id ] !== frame ) {\n\n\t\t\t_videoTextures[ id ] = frame;\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tvar warnedTexture2D = false;\n\tvar warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return 10497;\n\t\tif ( p === ClampToEdgeWrapping ) return 33071;\n\t\tif ( p === MirroredRepeatWrapping ) return 33648;\n\n\t\tif ( p === NearestFilter ) return 9728;\n\t\tif ( p === NearestMipMapNearestFilter ) return 9984;\n\t\tif ( p === NearestMipMapLinearFilter ) return 9986;\n\n\t\tif ( p === LinearFilter ) return 9729;\n\t\tif ( p === LinearMipMapNearestFilter ) return 9985;\n\t\tif ( p === LinearMipMapLinearFilter ) return 9987;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === AddEquation ) return 32774;\n\t\tif ( p === SubtractEquation ) return 32778;\n\t\tif ( p === ReverseSubtractEquation ) return 32779;\n\n\t\tif ( p === ZeroFactor ) return 0;\n\t\tif ( p === OneFactor ) return 1;\n\t\tif ( p === SrcColorFactor ) return 768;\n\t\tif ( p === OneMinusSrcColorFactor ) return 769;\n\t\tif ( p === SrcAlphaFactor ) return 770;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return 771;\n\t\tif ( p === DstAlphaFactor ) return 772;\n\t\tif ( p === OneMinusDstAlphaFactor ) return 773;\n\n\t\tif ( p === DstColorFactor ) return 774;\n\t\tif ( p === OneMinusDstColorFactor ) return 775;\n\t\tif ( p === SrcAlphaSaturateFactor ) return 776;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tif ( p === MinEquation ) return 32775;\n\t\t\t\tif ( p === MaxEquation ) return 32776;\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author jsantell / https://www.jsantell.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar cameraLPos = new Vector3();\nvar cameraRPos = new Vector3();\n\n/**\n * Assumes 2 cameras that are parallel and share an X-axis, and that\n * the cameras' projection and world matrices have already been set.\n * And that near and far planes are identical for both cameras.\n * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n */\nfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\tvar ipd = cameraLPos.distanceTo( cameraRPos );\n\n\tvar projL = cameraL.projectionMatrix.elements;\n\tvar projR = cameraR.projectionMatrix.elements;\n\n\t// VR systems will have identical far and near planes, and\n\t// most likely identical top and bottom frustum extents.\n\t// Use the left camera for these values.\n\tvar near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\tvar far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\tvar topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\tvar bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\tvar leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\tvar rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\tvar left = near * leftFov;\n\tvar right = near * rightFov;\n\n\t// Calculate the new camera's position offset from the\n\t// left camera. xOffset should be roughly half `ipd`.\n\tvar zOffset = ipd / ( - leftFov + rightFov );\n\tvar xOffset = zOffset * - leftFov;\n\n\t// TODO: Better way to apply this offset?\n\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\tcamera.translateX( xOffset );\n\tcamera.translateZ( zOffset );\n\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t// Find the union of the frustum values of the cameras and scale\n\t// the values so that the near plane's position does not change in world space,\n\t// although must now be relative to the new union camera.\n\tvar near2 = near + zOffset;\n\tvar far2 = far + zOffset;\n\tvar left2 = left - xOffset;\n\tvar right2 = right + ( ipd - xOffset );\n\tvar top2 = topFov * far / far2 * near2;\n\tvar bottom2 = bottomFov * far / far2 * near2;\n\n\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebVRManager( renderer ) {\n\n\tvar renderWidth, renderHeight;\n\tvar scope = this;\n\n\tvar device = null;\n\tvar frameData = null;\n\n\tvar poseTarget = null;\n\n\tvar controllers = [];\n\tvar standingMatrix = new Matrix4();\n\tvar standingMatrixInverse = new Matrix4();\n\n\tvar framebufferScaleFactor = 1.0;\n\n\tvar referenceSpaceType = 'local-floor';\n\n\tif ( typeof window !== 'undefined' && 'VRFrameData' in window ) {\n\n\t\tframeData = new window.VRFrameData();\n\t\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\n\n\t}\n\n\tvar matrixWorldInverse = new Matrix4();\n\tvar tempQuaternion = new Quaternion();\n\tvar tempPosition = new Vector3();\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.viewport = new Vector4();\n\tcameraL.layers.enable( 1 );\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.viewport = new Vector4();\n\tcameraR.layers.enable( 2 );\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tfunction isPresenting() {\n\n\t\treturn device !== null && device.isPresenting === true;\n\n\t}\n\n\tvar currentSize = new Vector2(), currentPixelRatio;\n\n\tfunction onVRDisplayPresentChange() {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar eyeParameters = device.getEyeParameters( 'left' );\n\t\t\trenderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor;\n\t\t\trenderHeight = eyeParameters.renderHeight * framebufferScaleFactor;\n\n\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\trenderer.getSize( currentSize );\n\n\t\t\trenderer.setDrawingBufferSize( renderWidth, renderHeight, 1 );\n\n\t\t\tcameraL.viewport.set( 0, 0, renderWidth / 2, renderHeight );\n\t\t\tcameraR.viewport.set( renderWidth / 2, 0, renderWidth / 2, renderHeight );\n\n\t\t\tanimation.start();\n\n\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t} else {\n\n\t\t\tif ( scope.enabled ) {\n\n\t\t\t\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tvar triggers = [];\n\n\tfunction findGamepad( id ) {\n\n\t\tvar gamepads = navigator.getGamepads && navigator.getGamepads();\n\n\t\tfor ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {\n\n\t\t\tvar gamepad = gamepads[ i ];\n\n\t\t\tif ( gamepad && ( gamepad.id === 'Daydream Controller' ||\n\t\t\t\tgamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||\n\t\t\t\tgamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||\n\t\t\t\tgamepad.id.startsWith( 'HTC Vive Focus' ) ||\n\t\t\t\tgamepad.id.startsWith( 'Spatial Controller' ) ) ) {\n\n\t\t\t\tif ( j === id ) return gamepad;\n\n\t\t\t\tj ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateControllers() {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar gamepad = findGamepad( i );\n\n\t\t\tif ( gamepad !== undefined && gamepad.pose !== undefined ) {\n\n\t\t\t\tif ( gamepad.pose === null ) return;\n\n\t\t\t\t// Pose\n\n\t\t\t\tvar pose = gamepad.pose;\n\n\t\t\t\tif ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );\n\n\t\t\t\tif ( pose.position !== null ) controller.position.fromArray( pose.position );\n\t\t\t\tif ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );\n\t\t\t\tcontroller.matrix.compose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrix.premultiply( standingMatrix );\n\t\t\t\tcontroller.matrix.decompose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrixWorldNeedsUpdate = true;\n\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t// Trigger\n\n\t\t\t\tvar buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;\n\n\t\t\t\tif ( triggers[ i ] === undefined ) triggers[ i ] = false;\n\n\t\t\t\tif ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) {\n\n\t\t\t\t\ttriggers[ i ] = gamepad.buttons[ buttonId ].pressed;\n\n\t\t\t\t\tif ( triggers[ i ] === true ) {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectstart' } );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectend' } );\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'select' } );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tcontroller.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateViewportFromBounds( viewport, bounds ) {\n\n\t\tif ( bounds !== null && bounds.length === 4 ) {\n\n\t\t\tviewport.set( bounds[ 0 ] * renderWidth, bounds[ 1 ] * renderHeight, bounds[ 2 ] * renderWidth, bounds[ 3 ] * renderHeight );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\n\t\tanimation.setContext( value );\n\n\t};\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.setPoseTarget = function ( object ) {\n\n\t\tif ( object !== undefined ) poseTarget = object;\n\n\t};\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tvar userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0;\n\n\t\tif ( isPresenting() === false ) {\n\n\t\t\tcamera.position.set( 0, userHeight, 0 );\n\t\t\tcamera.rotation.set( 0, 0, 0 );\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tdevice.depthNear = camera.near;\n\t\tdevice.depthFar = camera.far;\n\n\t\tdevice.getFrameData( frameData );\n\n\t\t//\n\n\t\tif ( referenceSpaceType === 'local-floor' ) {\n\n\t\t\tvar stageParameters = device.stageParameters;\n\n\t\t\tif ( stageParameters ) {\n\n\t\t\t\tstandingMatrix.fromArray( stageParameters.sittingToStandingTransform );\n\n\t\t\t} else {\n\n\t\t\t\tstandingMatrix.makeTranslation( 0, userHeight, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar pose = frameData.pose;\n\t\tvar poseObject = poseTarget !== null ? poseTarget : camera;\n\n\t\t// We want to manipulate poseObject by its position and quaternion components since users may rely on them.\n\t\tposeObject.matrix.copy( standingMatrix );\n\t\tposeObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale );\n\n\t\tif ( pose.orientation !== null ) {\n\n\t\t\ttempQuaternion.fromArray( pose.orientation );\n\t\t\tposeObject.quaternion.multiply( tempQuaternion );\n\n\t\t}\n\n\t\tif ( pose.position !== null ) {\n\n\t\t\ttempQuaternion.setFromRotationMatrix( standingMatrix );\n\t\t\ttempPosition.fromArray( pose.position );\n\t\t\ttempPosition.applyQuaternion( tempQuaternion );\n\t\t\tposeObject.position.add( tempPosition );\n\n\t\t}\n\n\t\tposeObject.updateMatrixWorld();\n\n\t\t//\n\n\t\tcameraL.near = camera.near;\n\t\tcameraR.near = camera.near;\n\n\t\tcameraL.far = camera.far;\n\t\tcameraR.far = camera.far;\n\n\t\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\n\t\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\n\n\t\t// TODO (mrdoob) Double check this code\n\n\t\tstandingMatrixInverse.getInverse( standingMatrix );\n\n\t\tif ( referenceSpaceType === 'local-floor' ) {\n\n\t\t\tcameraL.matrixWorldInverse.multiply( standingMatrixInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\t}\n\n\t\tvar parent = poseObject.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\n\t\t\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\n\n\t\t}\n\n\t\t// envMap and Mirror needs camera.matrixWorld\n\n\t\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\n\t\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\n\n\t\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\n\t\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\n\n\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t//\n\n\t\tvar layers = device.getLayers();\n\n\t\tif ( layers.length ) {\n\n\t\t\tvar layer = layers[ 0 ];\n\n\t\t\tupdateViewportFromBounds( cameraL.viewport, layer.leftBounds );\n\t\t\tupdateViewportFromBounds( cameraR.viewport, layer.rightBounds );\n\n\t\t}\n\n\t\tupdateControllers();\n\n\t\treturn cameraVR;\n\n\t};\n\n\tthis.getStandingMatrix = function () {\n\n\t\treturn standingMatrix;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar animation = new WebGLAnimation();\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tanimation.setAnimationLoop( callback );\n\n\t\tif ( isPresenting() ) animation.start();\n\n\t};\n\n\tthis.submitFrame = function () {\n\n\t\tif ( isPresenting() ) device.submitFrame();\n\n\t};\n\n\tthis.dispose = function () {\n\n\t\tif ( typeof window !== 'undefined' ) {\n\n\t\t\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\n\n\t\t}\n\n\t};\n\n\t// DEPRECATED\n\n\tthis.setFrameOfReferenceType = function () {\n\n\t\tconsole.warn( 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.' );\n\n\t};\n\n}\n\nObject.assign( WebVRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer ) {\n\n\tvar scope = this;\n\n\tvar gl = renderer.context;\n\n\tvar session = null;\n\n\tvar referenceSpace = null;\n\tvar referenceSpaceType = 'local-floor';\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSources = [];\n\n\tfunction isPresenting() {\n\n\t\treturn session !== null && referenceSpace !== null;\n\n\t}\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tif ( inputSources[ i ] === event.inputSource ) {\n\n\t\t\t\tcontrollers[ i ].dispatchEvent( { type: event.type } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tsession.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tinputSources = session.inputSources;\n\n\t\t\tsession.addEventListener( 'inputsourceschange', function () {\n\n\t\t\t\tinputSources = session.inputSources;\n\t\t\t\tconsole.log( inputSources );\n\n\t\t\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\tvar controller = controllers[ i ];\n\t\t\t\t\tcontroller.userData.inputSource = inputSources[ i ];\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t};\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar parent = camera.parent;\n\t\t\tvar cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update camera and its children\n\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tvar children = camera.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\treturn cameraVR;\n\n\t\t}\n\n\t\treturn camera;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tvar views = pose.views;\n\t\t\tvar baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tfor ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = baseLayer.getViewport( view );\n\t\t\t\tvar viewMatrix = view.transform.inverse.matrix;\n\n\t\t\t\tvar camera = cameraVR.cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar inputSource = inputSources[ i ];\n\n\t\t\tif ( inputSource ) {\n\n\t\t\t\tvar inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\tcontroller.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\tcontroller.matrix.decompose( controller.position, controller.rotation, controller.scale );\n\t\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcontroller.visible = false;\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n\t// DEPRECATED\n\n\tthis.getStandingMatrix = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' );\n\t\treturn new Matrix4();\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' );\n\n\t};\n\n\tthis.setDevice = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' );\n\n\t};\n\n\tthis.setFrameOfReferenceType = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.' );\n\n\t};\n\n\tthis.submitFrame = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentActiveCubeFace = 0,\n\t\t_currentActiveMipmapLevel = 0,\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\n\t\t// geometry and program caching\n\n\t\t_currentGeometryProgram = {\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false\n\t\t},\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,\n\t\t\txrCompatible: true\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( ! capabilities.isWebGL2 ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, utils, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( geometries, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.context = _gl;\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// vr\n\n\tvar vr = ( typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ) ? new WebXRManager( _this ) : new WebVRManager( _this );\n\n\tthis.vr = vr;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( vr.isPresenting() ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\n\t\tvr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( _currentGeometryProgram.geometry !== geometry.id ||\n\t\t\t_currentGeometryProgram.program !== program.id ||\n\t\t\t_currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) {\n\n\t\t\t_currentGeometryProgram.geometry = geometry.id;\n\t\t\t_currentGeometryProgram.program = program.id;\n\t\t\t_currentGeometryProgram.wireframe = material.wireframe === true;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar attribute;\n\t\tvar renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( 34963, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = Infinity;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( 4 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( 5 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( 6 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry ) {\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry && ! capabilities.isWebGL2 ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tinitMaterial( object.material[ i ], scene.fog, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tinitMaterial( object.material, scene.fog, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( vr.isPresenting() ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\tvr.setAnimationLoop( callback );\n\n\t\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tvar renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram.geometry = null;\n\t\t_currentGeometryProgram.program = null;\n\t\t_currentGeometryProgram.wireframe = false;\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tcamera = vr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort();\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tvr.submitFrame();\n\n\t\t}\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t_currentGeometryProgram.geometry = null;\n\t\t\t_currentGeometryProgram.program = null;\n\t\t\t_currentGeometryProgram.wireframe = false;\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar lightsStateVersion = lights.state.version;\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.onBeforeCompile( materialProperties.shader, _this );\n\n\t\t\t// Computing code again as onBeforeCompile may have changed the shaders\n\t\t\tcode = programCache.getProgramCode( material, parameters );\n\n\t\t\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\ttextures.resetTextureUnits();\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsStateVersion !== lights.state.version ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = _Math.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\t\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshToonMaterial ) {\n\n\t\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\trefreshUniformsMatcap( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\t\trefreshUniformsSprites( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value.copy( material.color );\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\tuniforms.envMap.value = material.envMap;\n\n\t\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t\t// WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\t\tuniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\trefreshUniformsPhong( uniforms, material );\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipMapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipMapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipMapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tvar width = texture.image.width;\n\t\tvar height = texture.image.height;\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 );\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t}\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar geometry;\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( geometry === undefined ) {\n\n\t\tgeometry = new BufferGeometry();\n\n\t\tvar float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tvar interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\tgeometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\tgeometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\tgeometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar intersectPoint = new Vector3();\n\t\tvar worldScale = new Vector3();\n\t\tvar mvPosition = new Vector3();\n\n\t\tvar alignedPosition = new Vector2();\n\t\tvar rotatedPosition = new Vector2();\n\t\tvar viewWorldMatrix = new Matrix4();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t\t\t// compute position in camera space\n\t\t\talignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t\t\t// to check if rotation is not zero\n\t\t\tif ( sin !== undefined ) {\n\n\t\t\t\trotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );\n\t\t\t\trotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y );\n\n\t\t\t} else {\n\n\t\t\t\trotatedPosition.copy( alignedPosition );\n\n\t\t\t}\n\n\n\t\t\tvertexPosition.copy( mvPosition );\n\t\t\tvertexPosition.x += rotatedPosition.x;\n\t\t\tvertexPosition.y += rotatedPosition.y;\n\n\t\t\t// transform to world space\n\t\t\tvertexPosition.applyMatrix4( viewWorldMatrix );\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tworldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t\tviewWorldMatrix.copy( raycaster._camera.matrixWorld );\n\t\t\tthis.modelViewMatrix.multiplyMatrices( raycaster._camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t\tmvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\t\tif ( raycaster._camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t\tworldScale.multiplyScalar( - mvPosition.z );\n\n\t\t\t}\n\n\t\t\tvar rotation = this.material.rotation;\n\t\t\tvar sin, cos;\n\t\t\tif ( rotation !== 0 ) {\n\n\t\t\t\tcos = Math.cos( rotation );\n\t\t\t\tsin = Math.sin( rotation );\n\n\t\t\t}\n\n\t\t\tvar center = this.center;\n\n\t\t\ttransformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\n\t\t\tuvA.set( 0, 0 );\n\t\t\tuvB.set( 1, 0 );\n\t\t\tuvC.set( 1, 1 );\n\n\t\t\t// check first triangle\n\t\t\tvar intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );\n\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\t// check second triangle\n\t\t\t\ttransformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\t\tuvB.set( 0, 1 );\n\n\t\t\t\tintersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint );\n\t\t\t\tif ( intersect === null ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\tuv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ),\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\treturn this;\n\n\t}\n\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar vector = new Vector4();\n\n\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( var i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tvar scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\t\tvar identityMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\tvar bones = this.bones;\n\t\t\tvar boneInverses = this.boneInverses;\n\t\t\tvar boneMatrices = this.boneMatrices;\n\t\t\tvar boneTexture = this.boneTexture;\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t\toffsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t\t}\n\n\t\t\tif ( boneTexture !== undefined ) {\n\n\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\t\tfor ( var i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i ] += start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() ),\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += precision;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localPrecisionSq = localPrecision * localPrecision;\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [];\n\n\t\t\t\t\tfor ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t\tstart.copy( vertices[ i ] );\n\t\t\t\t\tend.copy( vertices[ i + 1 ] );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += threshold;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\t\t\tvar intersectPoint = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tray.closestPointToPoint( point, intersectPoint );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\t\tvar keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tindex1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.5)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tvar minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( var i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tvar i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tvar p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tvar stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( ear, triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tvar p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tvar p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tvar p = start;\n\tdo {\n\n\t\tvar a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn p;\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tvar a = start;\n\tdo {\n\n\t\tvar b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tvar c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tvar queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tvar b = splitPolygon( outerNode, hole );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m.next;\n\n\twhile ( p !== stop ) {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn m;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tvar i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tvar p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\n\t\t locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tif ( ( equals( p1, p2 ) && equals( q1, q2 ) ) ||\n\t\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\n\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\n\t\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tvar p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tvar a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tvar p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tvar sum = 0;\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tvar l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tvar uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * clearCoat: \n * clearCoatRoughness: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * gradientMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMeshPhongMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.gradientMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMeshPhongMaterial.prototype.copy.call( this, source );\n\n\tthis.gradientMap = source.gradientMap;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tvar values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tvar TypedKeyframeTrack = this.constructor;\n\t\tvar track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tvar trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tvar times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tclone: function () {\n\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\t\treturn this;\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = this.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AnimationLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( DataTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = 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\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( /* t */ ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\n\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\n\t\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( var name in json.uniforms ) {\n\n\t\t\t\tvar uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( var key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tvar s = '';\n\n\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.maxInstancedCount = source.maxInstancedCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.maxInstancedCount = this.maxInstancedCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tvar data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\tvar bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\tvar bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.addAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tvar morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( var key in morphAttributes ) {\n\n\t\t\t\tvar attributeArray = morphAttributes[ key ];\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar attribute = attributeArray[ i ];\n\t\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\t\tvar bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.resourcePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( value ) {\n\n\t\tthis.resourcePath = value;\n\t\treturn this;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tif ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) {\n\n\t\t\t\t\t\t\tvar geometryLoader = new THREE.LegacyJSONLoader();\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.resourcePath ).geometry;\n\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type \"Geometry\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar cache = {}; // MultiMaterial\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tvar material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = {\n\n\tconstructor: ImageBitmapLoader,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\tif ( scope.options === undefined ) {\n\n\t\t\t\t// Workaround for FireFox. It causes an error if you pass options.\n\t\t\t\treturn createImageBitmap( blob );\n\n\t\t\t} else {\n\n\t\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t\t}\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t},\n\n\tsetCrossOrigin: function ( /* value */ ) {\n\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tvar ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tvar glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) return;\n\n\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {}\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\nObject.assign( Loader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tonLoadStart: function () {},\n\n\tonLoadProgress: function () {},\n\n\tonLoadComplete: function () {},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar BlendingMode = {\n\t\t\tNoBlending: NoBlending,\n\t\t\tNormalBlending: NormalBlending,\n\t\t\tAdditiveBlending: AdditiveBlending,\n\t\t\tSubtractiveBlending: SubtractiveBlending,\n\t\t\tMultiplyBlending: MultiplyBlending,\n\t\t\tCustomBlending: CustomBlending\n\t\t};\n\n\t\tvar color = new Color();\n\t\tvar textureLoader = new TextureLoader();\n\t\tvar materialLoader = new MaterialLoader();\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( context === undefined ) {\n\n\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\tcontext = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScale( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScale( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScale( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScale( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScale( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScale( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScale( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScale( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScale( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScale( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScale( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScale( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScale( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScale( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScale( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScale( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tscale: function ( s ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, i * 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function () {\n\n\t\tvar array = [];\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, i * 3 );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( skyColor );\n\tvar color2 = new Color().set( groundColor );\n\n\tvar sky = new Vector3( color1.r, color1.g, color1.b );\n\tvar ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tvar c0 = Math.sqrt( Math.PI );\n\tvar c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\teyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\t\tvar clock = new Clock();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\n\n\t\t\tthis.timeDelta = clock.getDelta();\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\tif ( listener.positionX ) {\n\n\t\t\t\t// code path for Chrome (see #14393)\n\n\t\t\t\tvar endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\t\tlistener.positionX.linearRampToValueAtTime( position.x, endTime );\n\t\t\t\tlistener.positionY.linearRampToValueAtTime( position.y, endTime );\n\t\t\t\tlistener.positionZ.linearRampToValueAtTime( position.z, endTime );\n\t\t\t\tlistener.forwardX.linearRampToValueAtTime( orientation.x, endTime );\n\t\t\t\tlistener.forwardY.linearRampToValueAtTime( orientation.y, endTime );\n\t\t\t\tlistener.forwardZ.linearRampToValueAtTime( orientation.z, endTime );\n\t\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t\t} else {\n\n\t\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.startTime = 0;\n\tthis.offset = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tthis.startTime = this.context.currentTime;\n\t\tsource.start( this.startTime, this.offset );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\t\t\tthis.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate;\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.offset = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\tvar panner = this.panner;\n\n\t\t\tif ( panner.positionX ) {\n\n\t\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\t\tvar endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\t\tpanner.positionX.linearRampToValueAtTime( position.x, endTime );\n\t\t\t\tpanner.positionY.linearRampToValueAtTime( position.y, endTime );\n\t\t\t\tpanner.positionZ.linearRampToValueAtTime( position.z, endTime );\n\t\t\t\tpanner.orientationX.linearRampToValueAtTime( orientation.x, endTime );\n\t\t\t\tpanner.orientationY.linearRampToValueAtTime( orientation.y, endTime );\n\t\t\t\tpanner.orientationZ.linearRampToValueAtTime( orientation.z, endTime );\n\n\t\t\t} else {\n\n\t\t\t\tpanner.setPosition( position.x, position.y, position.z );\n\t\t\t\tpanner.setOrientation( orientation.x, orientation.y, orientation.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tbufferType = Array;\n\t\t\tmixFunction = this._select;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: ( function () {\n\n\t\tvar reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' );\n\n\t\treturn function sanitizeNodeName( name ) {\n\n\t\t\treturn name.replace( /\\s/g, '_' ).replace( reservedRe, '' );\n\n\t\t};\n\n\t}() ),\n\n\tparseTrackName: function () {\n\n\t\t// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n\t\t// only latin characters, and the unicode \\p{L} is not yet supported. So\n\t\t// instead, we exclude reserved characters and match everything else.\n\t\tvar wordChar = '[^' + RESERVED_CHARS_RE + ']';\n\t\tvar wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n\t\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t\t// be matched to parse the rest of the track name.\n\t\tvar directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', wordChar );\n\n\t\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\t\tvar nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot );\n\n\t\t// Object on target node, and accessor. May not contain reserved\n\t\t// characters. Accessor may contain any character except closing bracket.\n\t\tvar objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', wordChar );\n\n\t\t// Property and accessor. May not contain reserved characters. Accessor may\n\t\t// contain any non-bracket characters.\n\t\tvar propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', wordChar );\n\n\t\tvar trackRe = new RegExp( ''\n\t\t\t+ '^'\n\t\t\t+ directoryRe\n\t\t\t+ nodeRe\n\t\t\t+ objectRe\n\t\t\t+ propertyRe\n\t\t\t+ '$'\n\t\t);\n\n\t\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\n\t\treturn function parseTrackName( trackName ) {\n\n\t\t\tvar matches = trackRe.exec( trackName );\n\n\t\t\tif ( ! matches ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\tvar results = {\n\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\tnodeName: matches[ 2 ],\n\t\t\t\tobjectName: matches[ 3 ],\n\t\t\t\tobjectIndex: matches[ 4 ],\n\t\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\t\tpropertyIndex: matches[ 6 ]\n\t\t\t};\n\n\t\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t// include '.' characters).\n\t\t\t\tif ( supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\t\tresults.objectName = objectName;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\treturn results;\n\n\t\t};\n\n\t}(),\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tvar bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length,\n\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\t\tvar duration = this._clip.duration;\n\t\tvar loop = this.loop;\n\t\tvar loopCount = this._loopCount;\n\n\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis._camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis._camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axiz.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t};\n\n}();\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.updateMatrixWorld = function () {\n\n\tvar vector = new Vector3();\n\n\tvar boneMatrix = new Matrix4();\n\tvar matrixWorldInv = new Matrix4();\n\n\treturn function updateMatrixWorld( force ) {\n\n\t\tvar bones = this.bones;\n\n\t\tvar geometry = this.geometry;\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tmatrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tvar bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j, vector.x, vector.y, vector.z );\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author abelnation / http://github.com/abelnation\n * @author Mugen87 / http://github.com/Mugen87\n * @author WestLangley / http://github.com/WestLangley\n *\n * This helper must be added as a child of the light\n */\n\nfunction RectAreaLightHelper( light, color ) {\n\n\tthis.type = 'RectAreaLightHelper';\n\n\tthis.light = light;\n\n\tthis.color = color; // optional hardwired color for the helper\n\n\tvar positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tLine.call( this, geometry, material );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) );\n\n\tthis.update();\n\n}\n\nRectAreaLightHelper.prototype = Object.create( Line.prototype );\nRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\n\nRectAreaLightHelper.prototype.update = function () {\n\n\tthis.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\t\tthis.children[ 0 ].material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\t// prevent hue shift\n\t\tvar c = this.material.color;\n\t\tvar max = Math.max( c.r, c.g, c.b );\n\t\tif ( max > 1 ) c.multiplyScalar( 1 / max );\n\n\t\tthis.children[ 0 ].material.color.copy( this.material.color );\n\n\t}\n\n};\n\nRectAreaLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\tvar color1 = new Color();\n\tvar color2 = new Color();\n\n\treturn function update() {\n\n\t\tvar mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\tcolor1.copy( this.light.color );\n\t\t\tcolor2.copy( this.light.groundColor );\n\n\t\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t};\n\n}();\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction LightProbeHelper( lightProbe, size ) {\n\n\tthis.lightProbe = lightProbe;\n\n\tthis.size = size;\n\n\tvar defines = {};\n\tdefines[ 'GAMMA_OUTPUT' ] = \"\";\n\n\t// material\n\tvar material = new ShaderMaterial( {\n\n\t\tdefines: defines,\n\n\t\tuniforms: {\n\n\t\t\tsh: { value: this.lightProbe.sh.coefficients }, // by reference\n\n\t\t\tintensity: { value: this.lightProbe.intensity }\n\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t'varying vec3 vNormal;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvNormal = normalize( normalMatrix * normal );',\n\n\t\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t\t'}',\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t'#define RECIPROCAL_PI 0.318309886',\n\n\t\t\t'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {',\n\n\t\t\t'\t// matrix is assumed to be orthogonal',\n\n\t\t\t'\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );',\n\n\t\t\t'}',\n\n\t\t\t'vec3 linearToOutput( in vec3 a ) {',\n\n\t\t\t'\t#ifdef GAMMA_OUTPUT',\n\n\t\t\t'\t\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\treturn a;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'}',\n\n\t\t\t'// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf',\n\t\t\t'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {',\n\n\t\t\t'\t// normal is assumed to have unit length',\n\n\t\t\t'\tfloat x = normal.x, y = normal.y, z = normal.z;',\n\n\t\t\t'\t// band 0',\n\t\t\t'\tvec3 result = shCoefficients[ 0 ] * 0.886227;',\n\n\t\t\t'\t// band 1',\n\t\t\t'\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;',\n\t\t\t'\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;',\n\t\t\t'\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;',\n\n\t\t\t'\t// band 2',\n\t\t\t'\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;',\n\t\t\t'\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;',\n\t\t\t'\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );',\n\t\t\t'\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;',\n\t\t\t'\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );',\n\n\t\t\t'\treturn result;',\n\n\t\t\t'}',\n\n\t\t\t'uniform vec3 sh[ 9 ]; // sh coefficients',\n\n\t\t\t'uniform float intensity; // light probe intensity',\n\n\t\t\t'varying vec3 vNormal;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvec3 normal = normalize( vNormal );',\n\n\t\t\t'\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );',\n\n\t\t\t'\tvec3 irradiance = shGetIrradianceAt( worldNormal, sh );',\n\n\t\t\t'\tvec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;',\n\n\t\t\t'\toutgoingLight = linearToOutput( outgoingLight );',\n\n\t\t\t'\tgl_FragColor = vec4( outgoingLight, 1.0 );',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' )\n\n\t} );\n\n\tvar geometry = new SphereBufferGeometry( 1, 32, 16 );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.onBeforeRender();\n\n}\n\nLightProbeHelper.prototype = Object.create( Mesh.prototype );\nLightProbeHelper.prototype.constructor = LightProbeHelper;\n\nLightProbeHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nLightProbeHelper.prototype.onBeforeRender = function () {\n\n\treturn function update() {\n\n\t\tthis.position.copy( this.lightProbe.position );\n\n\t\tthis.scale.set( 1, 1, 1 ).multiplyScalar( this.size );\n\n\t\tthis.material.uniforms.intensity.value = this.lightProbe.intensity;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) {\n\n\tthis.audio = audio;\n\tthis.range = range || 1;\n\tthis.divisionsInnerAngle = divisionsInnerAngle || 16;\n\tthis.divisionsOuterAngle = divisionsOuterAngle || 2;\n\n\tvar geometry = new BufferGeometry();\n\tvar divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2;\n\tvar positions = new Float32Array( ( divisions * 3 + 3 ) * 3 );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tvar materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } );\n\tvar materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } );\n\n\tLine.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] );\n\n\tthis.update();\n\n}\n\nPositionalAudioHelper.prototype = Object.create( Line.prototype );\nPositionalAudioHelper.prototype.constructor = PositionalAudioHelper;\n\nPositionalAudioHelper.prototype.update = function () {\n\n\tvar audio = this.audio;\n\tvar range = this.range;\n\tvar divisionsInnerAngle = this.divisionsInnerAngle;\n\tvar divisionsOuterAngle = this.divisionsOuterAngle;\n\n\tvar coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle );\n\tvar coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle );\n\n\tvar halfConeInnerAngle = coneInnerAngle / 2;\n\tvar halfConeOuterAngle = coneOuterAngle / 2;\n\n\tvar start = 0;\n\tvar count = 0;\n\tvar i, stride;\n\n\tvar geometry = this.geometry;\n\tvar positionAttribute = geometry.attributes.position;\n\n\tgeometry.clearGroups();\n\n\t//\n\n\tfunction generateSegment( from, to, divisions, materialIndex ) {\n\n\t\tvar step = ( to - from ) / divisions;\n\n\t\tpositionAttribute.setXYZ( start, 0, 0, 0 );\n\t\tcount ++;\n\n\t\tfor ( i = from; i < to; i += step ) {\n\n\t\t\tstride = start + count;\n\n\t\t\tpositionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range );\n\t\t\tpositionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range );\n\t\t\tpositionAttribute.setXYZ( stride + 2, 0, 0, 0 );\n\n\t\t\tcount += 3;\n\n\t\t}\n\n\t\tgeometry.addGroup( start, count, materialIndex );\n\n\t\tstart += count;\n\t\tcount = 0;\n\n\t}\n\n\t//\n\n\tgenerateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 );\n\tgenerateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 );\n\tgenerateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 );\n\n\t//\n\n\tpositionAttribute.needsUpdate = true;\n\n\tif ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false;\n\n};\n\nPositionalAudioHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material[ 0 ].dispose();\n\tthis.material[ 1 ].dispose();\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tthis.lightPlane.lookAt( v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( v2 );\n\t\tthis.targetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', 0, 0, - 1 );\n\t\tsetPoint( 't', 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', - w, - h, - 1 );\n\t\tsetPoint( 'n2', w, - h, - 1 );\n\t\tsetPoint( 'n3', - w, h, - 1 );\n\t\tsetPoint( 'n4', w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', - w, - h, 1 );\n\t\tsetPoint( 'f2', w, - h, 1 );\n\t\tsetPoint( 'f3', - w, h, 1 );\n\t\tsetPoint( 'f4', w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', - w, 0, 1 );\n\t\tsetPoint( 'cf2', w, 0, 1 );\n\t\tsetPoint( 'cf3', 0, - h, 1 );\n\t\tsetPoint( 'cf4', 0, h, 1 );\n\n\t\tsetPoint( 'cn1', - w, 0, - 1 );\n\t\tsetPoint( 'cn2', w, 0, - 1 );\n\t\tsetPoint( 'cn3', 0, - h, - 1 );\n\t\tsetPoint( 'cn4', 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar 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 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\tbox.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tvar 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 ] );\n\n\tvar 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 ];\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.type = 'PlaneHelper';\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar 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 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nvar lineGeometry, coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( lineGeometry === undefined ) {\n\n\t\tlineGeometry = new BufferGeometry();\n\t\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\tconeGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\n\nvar LinePieces = 1;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\tthis.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( _Math, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn _Math.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn _Math.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTargetCube.prototype, {\n\n\tactiveCubeFace: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' );\n\n\t\t}\n\t},\n\tactiveMipMapLevel: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebVRManager.prototype, {\n\n\tstanding: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .standing has been removed.' );\n\n\t\t}\n\t},\n\tuserHeight: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .userHeight has been removed.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tvar scope = this;\n\tvar audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tvar loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tvar loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' );\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AlphaFormat, AlwaysDepth, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FaceNormalsHelper, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, JSONLoader, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, Light, LightProbe, LightProbeHelper, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, _Math as Math, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverDepth, NoBlending, NoColors, NoToneMapping, NormalBlending, NotEqualDepth, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PositionalAudioHelper, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RectAreaLightHelper, RedFormat, ReinhardToneMapping, RepeatWrapping, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SphericalReflectionMapping, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StereoCamera, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uncharted2ToneMapping, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VertexNormalsHelper, VideoTexture, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, sRGBEncoding };\n","export default class MaterialObject {\r\n constructor() {\r\n this.rotate90 = () => Math.PI / 2;\r\n this.obj = null;\r\n }\r\n\r\n setPosition(x=null, y=null, z=null) {\r\n if(this.obj === null) {\r\n throw Error('Object not set');\r\n }\r\n if(x !== null) {\r\n this.obj.position.x = x;\r\n }\r\n if(y !== null) {\r\n this.obj.position.y = y;\r\n }\r\n if(z !== null) {\r\n this.obj.position.z = z;\r\n }\r\n }\r\n\r\n setRotation(x=null, y=null, z=null) {\r\n if(this.obj === null) {\r\n throw Error('Object not set');\r\n }\r\n\r\n if(x !== null) {\r\n this.obj.rotation.x = x;\r\n }\r\n if(y !== null) {\r\n this.obj.rotation.y = y;\r\n }\r\n if(z !== null) {\r\n this.obj.rotation.z = z;\r\n }\r\n }\r\n}","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for